結果
問題 |
No.433 ICPC国内予選の選抜ルールがこんな感じだったらうれしい
|
ユーザー |
![]() |
提出日時 | 2016-10-15 00:32:04 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 148 ms / 4,000 ms |
コード長 | 1,403 bytes |
コンパイル時間 | 1,428 ms |
コンパイル使用メモリ | 125,468 KB |
実行使用メモリ | 8,320 KB |
最終ジャッジ日時 | 2024-11-22 09:05:56 |
合計ジャッジ時間 | 7,669 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 48 |
ソースコード
#include <cstdlib> #include <cmath> #include <climits> #include <cfloat> #include <map> #include <utility> #include <set> #include <iostream> #include <memory> #include <string> #include <vector> #include <algorithm> #include <functional> #include <sstream> #include <deque> #include <complex> #include <stack> #include <queue> #include <cstdio> #include <cctype> #include <cstring> #include <ctime> #include <iterator> #include <bitset> #include <numeric> #include <list> #include <iomanip> #include <cassert> #include <array> #include <tuple> #include <initializer_list> #include <unordered_set> #include <unordered_map> #include <forward_list> using namespace std; using ll = long long; #define rep(i,n) for(int i = 0; i < (int)(n); ++i) int s[100010], p[100010], u[100010], r[100010], id[100010]; int main() { int n, k; cin >> n >> k; for (int i = 0; i < n; i++) { cin >> s[i] >> p[i] >> u[i]; } iota(id, id + n, 0); sort(id, id + n, [&](int a, int b) { return make_tuple(-s[a], p[a]) < make_tuple(-s[b], p[b]); }); map<int, int> univ_cnt; for (int i = 0; i < n; i++) { r[id[i]] = univ_cnt[u[id[i]]]; ++univ_cnt[u[id[i]]]; } sort(id, id + n, [&](int a, int b) { return make_tuple(-s[a], r[a], p[a]) < make_tuple(-s[b], r[b], p[b]); }); for (int i = 0; i < k; i++) { cout << id[i] << '\n'; } }