测试点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;
}
}