結果
問題 |
No.568 じゃんじゃん 落とす 委員会
|
ユーザー |
![]() |
提出日時 | 2025-05-21 11:18:50 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,092 bytes |
コンパイル時間 | 3,079 ms |
コンパイル使用メモリ | 279,276 KB |
実行使用メモリ | 13,028 KB |
最終ジャッジ日時 | 2025-05-21 11:18:58 |
合計ジャッジ時間 | 7,865 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 WA * 16 |
ソースコード
#include<bits/stdc++.h> using namespace std; const int N=2e5+5; int n,m,c1,c2,c3,ans=0x3f3f3f3f,x[N],a[N],b[N]; vector<int>bul[N]; struct BIT { int c[N]; void update(int u,int w){u++;for(int i=u;i<N;i+=i&-i)c[i]+=w;} int query(int u){u++;int r=0;for(int i=u;i;i-=i&-i)r+=c[i];return r;} }tr1,tr2; int main() { // freopen("difficulty.in","r",stdin); // freopen("difficulty.out","w",stdout); // ios::sync_with_stdio(0); // cin.tie(0);cout.tie(0); cin>>n>>m; for(int i=1;i<=n;i++) { cin>>x[i]>>a[i]>>b[i]; if(x[i]==3){c3++;i--;n--;} if(x[i]==2){c2++;tr2.update(b[i],1);bul[a[i]].push_back(i);} if(x[i]==1){c1++;tr1.update(b[i],1);bul[a[i]].push_back(i);} if(x[i]==0)bul[a[i]].push_back(i); } for(int i=100001,r,c;~i;i--) { for(int p:bul[i]) { if(x[p]==2){c2--;tr2.update(b[p],-1);c3++;} if(x[p]==1){c1--;tr1.update(b[p],-1);c2++;tr2.update(b[p],1);} if(x[p]==0){c1++;tr1.update(b[p],1);} } r=max(0,m-c2-c3); if(r<=c1) { c=131071; for(int j=16;~j;j--)if(c1-tr1.query(c-(1<<j)-1)<r)c-=(1<<j); ans=min(ans,c3+c2-tr2.query(c-1)); } } cout<<ans; }