結果

問題 No.433 ICPC国内予選の選抜ルールがこんな感じだったらうれしい
ユーザー vjudge1
提出日時 2024-12-21 23:39:32
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 132 ms / 4,000 ms
コード長 1,049 bytes
コンパイル時間 1,944 ms
コンパイル使用メモリ 181,232 KB
実行使用メモリ 10,932 KB
最終ジャッジ日時 2024-12-21 23:39:41
合計ジャッジ時間 8,706 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 48
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <bits/stdc++.h>
#define endl '\n'
#define ll long long
using namespace std;
const int N = 1e5 + 10;
int n, k;
struct node{
int id, s, p, u;
}a[N];
vector < pair < pair <int, int>, int > > U[N];
priority_queue < pair < pair <int, int>, pair <int, int> > > pq;
int cnt[N];
int main()
{
//freopen("icpc.in","r",stdin);
//freopen("icpc.out","w",stdout);
cin >> n >> k;
for (int i = 0; i < n; i ++)
{
a[i].id = i;
cin >> a[i].s >> a[i].p >> a[i].u;
U[a[i].u].push_back({{a[i].s, -a[i].p}, i});
}
for (int i = 1; i < N; i ++)
{
if (!U[i].empty())
{
sort(U[i].begin(), U[i].end());
int x = U[i].back().second;
U[i].pop_back();
pq.push({{a[x].s, 0}, {-a[x].p, x}});
}
}
while (k --)
{
pair < pair <int, int>, pair <int, int> > t = pq.top();
pq.pop();
int x = t.second.second;
cout << x << '\n';
if (!U[a[x].u].empty())
{
cnt[a[x].u] ++;
int y = U[a[x].u].back().second;
U[a[x].u].pop_back();
pq.push({{a[y].s, -cnt[a[y].u]}, {-a[y].p, y}});
}
}
return 0;
}
//Fuck you, Japan.
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0