結果
問題 |
No.568 じゃんじゃん 落とす 委員会
|
ユーザー |
![]() |
提出日時 | 2019-06-20 23:14:57 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 112 ms / 1,000 ms |
コード長 | 967 bytes |
コンパイル時間 | 778 ms |
コンパイル使用メモリ | 75,144 KB |
実行使用メモリ | 12,976 KB |
最終ジャッジ日時 | 2024-12-23 00:02:22 |
合計ジャッジ時間 | 3,618 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 26 |
ソースコード
#include <algorithm> #include <iostream> #include <vector> using namespace std; const int INF = (int)1e9 + 7; int main() { int n, m; cin >> n >> m; vector<int> x(n), a(n), b(n), cnt(6), va[101010], vb[101010]; for (int i = 0; i < n; i++) { cin >> x[i] >> a[i] >> b[i]; va[a[i]].emplace_back(i); vb[b[i]].emplace_back(i); ++cnt[++x[i]]; } int ans = INF; int sb = 100001; for (int sa = 0; sa <= 100001; ++sa) { // 2 完以上が m 人未満 while (cnt[2] + cnt[3] + cnt[4] + cnt[5] < m && --sb >= 0) { for (int i: vb[sb]) { --cnt[x[i]]; ++cnt[++x[i]]; } } if (cnt[2] + cnt[3] + cnt[4] + cnt[5] >= m) { ans = min(ans, cnt[3] + cnt[4] + cnt[5]); for (int i: va[sa]) { --cnt[x[i]]; ++cnt[--x[i]]; } } } cout << ans << endl; return 0; }