统计射击成绩[(https://www.online1987.com/统计射击比赛成绩/)]
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int N = 0;
char c = '0';
cin >> N;
vector<vector<int>> score(N, vector<int>(2,0));//先初始化才能赋值,否则需要push_back();
for (int i = 0; i < N; ++i) {
if(i==12) cin >> score[i][0];//最后一位没有逗号
else
cin >> score[i][0]>>c;//处理逗号
}
for (int i = 0; i < N; ++i) {
if(i == 12) cin >> score[i][1];
else
cin >> score[i][1] >> c;
}
sort(score.begin(), score.end());
vector<vector<int>> res;
int p = N - 1;//倒着取数
while (p>=2) {
if (score[p][0] == score[p - 2][0]) {
res.push_back({score[p][1] + score[p - 1][1] + score[p - 2][1] , score[p][0]});
}//因为接下来要使用sort()对分数排序,所以把分数插在第一行,ID在第二行。
while (score[p][0] == score[p - 1][0]) {
--p;
if (p == 0) break;//防止p-1越界
}//while循环使p到相同元素的边界
--p;//到下一个元素
}
sort(res.begin(), res.end());//对二维数组使用sort,相当于字典排序。
for (int i = res.size()-1; i>=0; --i) {
cout << res[i][1] << endl;
}
//for (int i = res.size() - 1; i >= 0; --i) {
//cout << res[i][0] << endl;测试计算结果
//}
return 0;
}
标签:sort,www,int,res,cin,--,score,射击,成绩
From: https://www.cnblogs.com/chunbai11/p/16744638.html