結果
| 問題 |
No.568 じゃんじゃん 落とす 委員会
|
| コンテスト | |
| ユーザー |
kyuna
|
| 提出日時 | 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;
}
kyuna