n 輪遊戲,每輪記錄玩家名字與得分(可負)。最終總分最高者獲勝;若並列最高,則最先達到該最高分者獲勝。
map 累計每人總分,記錄最高分 maxScore≥ maxScore 且其最終總分 == maxScore 時,即為獲勝者,輸出並結束
#include <cstdio>
#include <map>
#include <string>
using namespace std;
const int MAXN = 1010;
char name[MAXN][36];
int score[MAXN];
int main() {
int n;
scanf("%d", &n);
map total;
for (int i = 0; i < n; ++i) {
scanf("%s%d", name[i], &score[i]);
total[name[i]] += score[i];
}
int maxScore = 0;
for (auto &p : total) maxScore = max(maxScore, p.second);
map prefix;
for (int i = 0; i < n; ++i) {
prefix[name[i]] += score[i];
if (prefix[name[i]] >= maxScore && total[name[i]] == maxScore) {
puts(name[i]);
break;
}
}
return 0;
}
map 自動處理字符串鍵值統計n ≤ 1000