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