結果
問題 |
No.568 じゃんじゃん 落とす 委員会
|
ユーザー |
![]() |
提出日時 | 2025-05-21 11:35:03 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,968 bytes |
コンパイル時間 | 1,693 ms |
コンパイル使用メモリ | 166,076 KB |
実行使用メモリ | 15,428 KB |
最終ジャッジ日時 | 2025-05-21 11:35:07 |
合計ジャッジ時間 | 3,592 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 2 WA * 24 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define int long long #define bui __builtin_popcount #define pii pair<int,int> #define se second #define fi first #define mid (l+r>>1) #define qwq cout<<"----------------------------------------------------------------------"; const int inf=1e18; int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } void prt(int x){ if(x<0)putchar('-'),x=-x; if(x<10)putchar(x+'0'); else prt(x/10),putchar(x%10+'0'); } int ksm(int x,int y,int mod){ if(y==0)return 1; int k=ksm(x,y/2ll,mod); if(y&1ll)return k*k%mod*x%mod; return k*k%mod; } const int N=1e6+5; int gcd(int x,int y){return (y)?gcd(y,x%y):x;} int max(int x,int y){return (x>y)?x:y;} int min(int x,int y){return (x<y)?x:y;} int n,m,ans[6],cnt[N]; int c[N]; struct kkk{ int id,x,y; }a[N],b[N]; bool cmp1(kkk a,kkk b){ return a.x<b.x; } bool cmp2(kkk a,kkk b){ return a.y<b.y; } void sl(){ cin>>n>>m; for(int i=1;i<=n;i++){ a[i].id=i; cnt[i]=read()+1; a[i].x=read(); a[i].y=read(); b[i]=a[i]; ans[cnt[i]]++; } if(ans[2]+ans[3]+ans[4]+ans[5]>=m){ cout<<ans[3]+ans[4]+ans[5]<<"\n"; return; } sort(a+1,a+n+1,cmp1); sort(b+1,b+n+1,cmp2); int r=n,l=1,nd=100001,tot=inf; for(int i=0;i<=100001;i++){ while(a[l].x==i-1&&l<=n){ cnt[a[l].id]--; ans[cnt[a[l].id]]++; ans[cnt[a[l].id]+1]--; l++; } while(n-ans[0]-ans[1]<m){ nd--; if(nd==-1)break; while(b[r].y==nd&&r>=1){ cnt[b[r].id]++; ans[cnt[b[r].id]]++; ans[cnt[b[r].id]-1]--; r--; } } if(n-ans[0]-ans[1]<m)break; // cout<<n-ans[0]-ans[1]<<" "<<ans[2]<<"\n"; // if(ans[0]+ans[1]+ans[2]+ans[3]+ans[4]+ans[5]!=n)cout<<"ntmd"; tot=min(tot,ans[3]+ans[4]+ans[5]); } cout<<tot<<"\n"; } signed main(){ // freopen("difficulty.in","r",stdin); // freopen("difficulty.out","w",stdout); int t=1; // cin>>t; while(t--)sl(); return 0; }