CCF201903-1(站外题)80分求助
  • 板块学术版
  • 楼主one_fish
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/26 20:31
  • 上次更新2023/10/26 22:50:39
查看原帖
CCF201903-1(站外题)80分求助
1165234
one_fish楼主2023/10/26 20:31

题意:

输入一个数n,输入一个长度为n的数组,求这个数组的最大数,中间的那个数,最小数

原链接

我的代码:

#include<bits/stdc++.h>
using namespace std;
long long a[1000000001];
int main()
{
	long long sum1=INT_MIN,sum2,sum3=INT_MAX,n,sum4,sum5;
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++)
	{
		if(a[i]>sum1)
		{
			sum1=a[i];
		}
		if(a[i]<sum3)
		{
			sum3=a[i];
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(n%2!=0)
		{
			sum2=n/2+1;// n若为奇数则中间数a[n/2+1]
		}
		if(n%2==0)
		{
			sum5=n/2;//n若为偶数则中间数为数组第(n的一半)的那个数(因为n是偶数,所以中间数有两个,第二个中间数就是数组第(n的一半)再后面的那个数)
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(n%2!=0)
		{
			sum4=a[sum2];
		}
		if(n%2==0)
		{
			sum4=(a[sum5]+a[sum5+1])/2;//若n为偶数则中间数最终为之前求的那两个中间数的平均值
		}
	}
	cout<<sum1<<" "<<sum4<<" "<<sum3;
	return 0;
}
2023/10/26 20:31
加载中...