样例过了,感觉没问题,为什么过不了啊!!!崩溃了
查看原帖
样例过了,感觉没问题,为什么过不了啊!!!崩溃了
866388
adksla楼主2023/11/16 01:06
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;

struct Stu{
    int team;
	int s;
	double scoree;//最终成绩	
}stu[1001];
	
struct Team{
	double ave;
}team[119];

bool cmp(Stu a,Stu b){
	if(a.scoree!=b.scoree) return a.scoree > b.scoree;
	return a.team < b.team;
}

int main(){
	int n,k;
	char t;
	double score[27][27];
	scanf("%d %d",&n,&k);
	for(int i=0;i<n;i++){
		scanf("%d %c",&stu[i].s,&t);
		stu[i].team = int(t);
//		printf("%d#\n",stu[i].team);
	}
	for(int j=0;j<k;j++){
		for(int m=0;m<k;m++){
			scanf("%lf",&score[j][m]);
		}
	}
	//算平均 
	for(int i=0;i<k;i++){
		int sum = 0;
		for(int j=0;j<k;j++){
			 sum += score[j][i];
		}
		team[i+65].ave = 1.0*sum / k;
//		printf("%lf",team[i+65].ave);
		
	}
	for(int i=0;i<k;i++){
		int x=0;
		int sum =0;
		for(int j=0;j<k;j++){
			if(score[j][i]>=team[i+65].ave-15 && score[j][i]<=team[i+65].ave+15){
				sum += score[j][i];
				x++;
			}
       	team[i+65].ave = round(1.0*sum / x); 
//	 	printf("%lf",team[i+65].ave);
	}
		
	}
//个人分数
	for(int i=0;i<n;i++){
//		printf("%d *\n",stu[i].team);
//		printf("$ %lf\n",team[stu[i].team].ave);
		stu[i].scoree = round(0.6*stu[i].s+0.4*team[stu[i].team].ave);
//		printf("%lf",stu[i].scoree);
	} 
//排序
	sort(stu,stu+n+1,cmp);
	for(int i=0;i<n;i++){
		char cc = char(stu[i].team);
		printf("%.0lf %c\n",stu[i].scoree,cc);
	}
	
	
	
	
	
	
} 
2023/11/16 01:06
加载中...