输入在第一行给出两个正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表非
,1 代表是
。随后 N 行,每行给出一个学生的解答。数字间均以空格分隔。
按照输入的顺序输出每个学生的得分,每个分数占一行。
使用vector<array<gg, 2>>
类型将题目的满分值和正确答案存储起来。每读取一个学生的解答,将它和正确答案作对比,累加解答正确的题目的分值即可。
#include <bits/stdc++.h>
using namespace std;
using gg = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
gg ni, mi;
cin >> ni >> mi;
vector<array<gg, 2>> problems(mi);
for (auto i = 0; i < mi; ++i)
cin >> problems[i][0];
for (auto i = 0; i < mi; ++i)
cin >> problems[i][1];
while (ni--) {
gg s = 0, ai;
for (int i = 0; i < mi; ++i) {
cin >> ai;
if (ai == problems[i][1]) {
s += problems[i][0];
}
}
cout << s << '\n';
}
return 0;
}