求助站外题
  • 板块灌水区
  • 楼主Never_AC
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/7/8 20:31
  • 上次更新2023/10/27 21:26:45
查看原帖
求助站外题
546290
Never_AC楼主2022/7/8 20:31

数据

小 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,不知道为什么啊

2022/7/8 20:31
加载中...