結果
| 問題 |
No.433 ICPC国内予選の選抜ルールがこんな感じだったらうれしい
|
| コンテスト | |
| ユーザー |
a3636tako
|
| 提出日時 | 2016-10-28 19:21:20 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 949 bytes |
| コンパイル時間 | 1,518 ms |
| コンパイル使用メモリ | 176,252 KB |
| 実行使用メモリ | 11,904 KB |
| 最終ジャッジ日時 | 2024-11-24 05:16:24 |
| 合計ジャッジ時間 | 7,684 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 WA * 46 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
struct Team{
int idx;
int s;
int p;
int u;
int uidx;
Team() {}
Team(int idx, int s, int p, int u) : idx(idx),s(s), p(p), u(u) {}
};
int N, K;
vector<Team> teams(100001);
map<int, vector<int>> univ;
int main(){
cin >> N >> K;
for(int i = 0; i < N; i++){
int s, p, u;
cin >> s >> p >> u;
Team t(i, s, p, u);
teams[i] = t;
univ[u].push_back(i);
}
for(auto& uu : univ){
sort(uu.second.begin(), uu.second.end(), [] (int a, int b) -> bool {
if(teams[a].s != teams[b].s) return teams[b].s < teams[a].s;
else return teams[a].p < teams[b].p;
});
for(int i = 0; i < uu.second.size(); i++){
teams[i].uidx = i;
}
}
sort(teams.begin(), teams.end(), [] (Team& a, Team& b) -> bool {
if(a.s != b.s) return b.s < a.s;
else if(a.uidx != b.uidx) return a.uidx < b.uidx;
else return a.p < b.p;
});
for(int i = 0; i < K; i++){
cout << teams[i].idx << endl;
}
}
a3636tako