CCF-CSP 201903-1小中大 满分题解
题目链接:CCF-CSP 201903-1小中大
思路:
1.由于给出的数据为有序,则直接判断第一个元素和最后一个元素的大小就可以判断该顺序为升序还是降序。
2.首先判断n的个数为偶数还是奇数,如果是奇数的话,则直接输出中间的数据值;如果是奇数的话,则输出最中间两个相邻数据的值。
3.判断是否保留小数。
代码如下:(结尾附测试样例)
#include <bits/stdc++.h>
using namespace std;
int main()
{
long n;cin>>n;
int a[n+1];
for(long i=1;i<=n;i++)
{
cin>>a[i];
}
double mid=0;
long min=0,max=0;
long temp=0;
if(n%2==0)
{
mid=(a[n/2]+a[(n/2)+1])/2.0;
temp=(a[n/2]+a[(n/2)+1])/2;
}
else
{
mid=a[n/2+1];
temp=a[n/2+1];
}
if(a[1]<a[n])
{
max=a[n];
min=a[1];
}
else
{
max=a[1];
min=a[n];
}
cout<<max<<" ";
if(mid-temp>0)
{
cout<<fixed<<setprecision(1)<<mid<<" ";
}
else
{
cout<<temp<<" ";
}
cout<<min<<endl;
return 0;
}
|