首页 > 其他分享 >统计射击成绩[(https://www.online1987.com/统计射击比赛成绩/)]

统计射击成绩[(https://www.online1987.com/统计射击比赛成绩/)]

时间:2022-09-30 13:46:43浏览次数:79  
标签:sort www int res cin -- score 射击 成绩

统计射击成绩[(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

相关文章