wa了3个点
查看原帖
wa了3个点
995307
ycd0719楼主2024/11/29 09:35

测试点2,3,7wa了,请大神帮忙看看!!!

#include<bits/stdc++.h>
using namespace std;
int n;//课程数
int p[50][5][105];//课程号、人号 
int q[50];
struct person {
	int id, sc, w;
}ps[105];
bool cmp1(person x, person y) {
	return x.id < y.id;
}
bool cmp2(person x, person y) {
	return x.sc > y.sc;
}
int gcd(int x, int y) {
	if (y == 0)return x;
	return gcd(y, x % y);
}
int main() {
	cin >> n;
	for (int i = 1;i <= n;i++) {
		cin >> q[i];//人数
		for (int j = 1;j <= q[i];j++) {//id 
			cin >> p[i][1][j];//输入学号 
		}
		for (int j = 1;j <= q[i];j++) {//sc 
			cin >> p[i][2][j];//输入参与率 
		}
		for (int j = 1;j <= q[i];j++) {//w 
			cin >> p[i][3][j];//输入得分 
		}
	}
	int y;cin >> y;//小y的学号
	int cnt = 0, s = 0;
	for (int i = 1;i <= n;i++) {
		int c = q[i];//c人
		for (int j = 1;j <= c;j++) {
			ps[j].id = p[i][1][j];
		}
		sort(ps + 1, ps + c + 1, cmp1);
		for (int j = 1;j <= c;j++) {
			ps[j].sc = p[i][2][j];
		}
		sort(ps + 1, ps + c + 1, cmp2);
		for (int j = 1;j <= c;j++) {
			ps[j].w = p[i][3][j];
		}
		//检查小y是否选了课程i
		for (int j = 1;j <= c;j++) {
			if (ps[j].id == y) {
				cnt++;
				s += ps[j].w;
			}
		}
	}
	cout << s / cnt ;
	if (s % cnt != 0) {
		int t = gcd(s%cnt, cnt);
		cout <<"+"<< s % cnt / t << "/" << cnt / t;
	}
		
}
2024/11/29 09:35
加载中...