- 练了一题ccf csp,是202303-2,得了70分。
# 70分代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
struct xx{
int t;
int c;
int id;
};
xx x[N];
bool cmp(xx a,xx b)
{
if(a.t!=b.t)return a.t>b.t;
else return a.c<b.c;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n,m,k;
cin>>n>>m>>k;
int tmax=0;
for(int i=1;i<=n;i++){
cin>>x[i].t>>x[i].c;
x[i].id=i;
tmax=max(tmax,x[i].t);
}
while(1){
int flag=0;
vector<xx>temp;
if(tmax==k)break;
for(int i=1;i<=n;i++){
if(x[i].t==tmax)temp.push_back(x[i]);
}
tmax--;
sort(temp.begin(),temp.end(),cmp);
for(vector<xx>::iterator it=temp.begin();it!=temp.end();it++){
if(it->t>k&&m-it->c>=0){
flag=1;
x[it->id].t--;
m-=it->c;
}
else break;
}
if(flag==0)break;
}
int ans=0;
for(int i=1;i<=n;i++){
ans=max(ans,x[i].t);
}
cout<<ans<<endl;
return 0;
}