数据
小 A 学数据管理课正学到崩溃,他现在收到了 个数据 n ,他现在想知道当这 个数组被 从小到大排好序后 ,这里面的最小值,最大值,前 数据的中位数,所有数 据的中位数,后 数据的中位数 输入格式 第一行一个整数 接下来一行 个整数,第 个表示 n i 输出格式 输出这个数组被从小到大排好序后的最小值,最大值,前n/2数据的中位数,所有数据的中位数,后 n/2数据的中位数,如果结果是小数,对于该小数输出保留一位小数
数据范围
对于20%的数据, 对于另外的数据, 全部相等 对于 的数据,
样例输入
10
10 2 3 4 5 6 7 8 9 1
样例输出 1 10 3 5.5 8 n a1, a2...an ⌊ ⌋2 n ⌊ ⌋2 n n n i ai ⌊ ⌋2 n ⌊ ⌋2 n 30% 5 ≤ n ≤ 10 20% ai 100% 5 ≤ n ≤ 105 , 1 ≤ ai ≤ 106
#include<bits/stdc++.h>
using namespace std;
bool cmp(int x,int y) {
return x>y;
}
int main() {
// freopen("a.in","r",stdin);
// freopen("a.out","w",stdout);
int a[10005],n;
double sum,sum2;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
printf("%d ",a[1]);
printf("%d ",a[n]);
if(n/2%2==0){
sum=(a[n/2/2]+a[n/2/2+1])/2;
sum2=sum-int(sum);
if(sum2>0) printf("%.1lf ",sum);
else printf("%d ",int(sum));
}else printf("%d ",a[int(n/2/2)+1]);
if(n%2==0){
sum=(a[n/2]+a[n/2+1]);
sum/=2;
sum2=sum-int(sum);
if(sum2>0) printf("%.1lf ",sum);
else printf("%d ",int(sum));
}else printf("%d ",a[int(n/2)+1]);
if(n/2%2==0){
sum=(a[n/2+n/2/2]+a[n/2+n/2/2+1])/2;
sum2=sum-int(sum);
if(sum2>0) printf("%.1lf ",sum);
else printf("%d ",int(sum));
}else printf("%d",a[int(n/2)+int(n/2/2)+1]);
return 0;
}
AC 3个,7个RE,不知道为什么啊