給定多個獎項的提名名單,每個獎項有若干提名影片。規則:
1. 所有出現的影片都有機會
2. 提名次數最多的影片獲獎
3. 平票時選名單中最早出現的
map mp;
vector v;
string award, film, winner;
int n, m, maxCnt = 0;
while(cin >> n && n) {
mp.clear(); v.clear();
while(n--) {
cin >> award >> m;
for(int i=0; i> film;
v.push_back(film);
mp[film]++; // 自動處理首次插入
}
}
maxCnt = 0;
for(int i=0; i maxCnt) {
maxCnt = mp[v[i]];
winner = v[i]; // 首次達到最大值即最早出現
}
}
cout << winner << endl;
}
時間:O(總提名數 × log(不同影片數)),map操作log級
空間:O(不同影片數 + 總提名數)
數據範圍小(n≤100, m≤10),極輕鬆通過。