40分求调
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
struct student {
int cj;
char dw;
}stu[1010];
bool cmp(student a, student b) {
if (a.cj != b.cj)return a.cj > b.cj;
else return a.dw < b.dw;
}
int main() {
int n, m;
int cj[30][30];
int sum1[30], sum2[30];
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> stu[i].cj >> stu[i].dw;
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
cin >> cj[i][j];
}
}
for (int i = 0; i < m; i++) {
sum1[i] = 0;
for (int j = 0; j < m; j++) {
sum1[i] += cj[j][i];
}
sum1[i] = round(sum1[i] / (m * 1.0));
}
for (int i = 0; i < m; i++) {
int o=0;
sum2[i] = 0;
for (int j = 0; j < m; j++) {
int k = cj[j][i] - sum1[i];
if (k >= -15 && k <= 15) {
sum2[i] += cj[j][i];
o += 1;
}
}
sum2[i] = round(sum2[i] / (o * 1.0));
}
for (int i = 0; i < n; i++) {
stu[i].cj = round(stu[i].cj * 0.6 + sum2[stu[i].dw - 'A'] * 0.4);
}
sort(stu, stu + n, cmp);
for (int i = 0; i < n; i++) {
cout << stu[i].cj << ' ' << stu[i].dw << '\n';
}
return 0;
}