Skip to content

Latest commit

 

History

History
64 lines (59 loc) · 964 Bytes

2023-5-13.md

File metadata and controls

64 lines (59 loc) · 964 Bytes

Note

  • 练了一题ccf csp,是202303-2,得了70分。

Code

# 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;
}