51求调
查看原帖
51求调
752628
l56983楼主2025/2/4 15:27
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> P;
int n,m;
priority_queue<P,vector<P>,greater<P> > q;//小
priority_queue<int> p;//大 
signed main()
{
	cin>>n>>m;	
	for(int i=1;i<=n;i++)
	{
		int x,t;
		cin>>x>>t;
		q.push(P(x,t));
	}
	int sum=0;
	int tmpx=0;
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		int x,y;
		x=q.top().first;	
		y=q.top().second;		
		if(sum<m&&sum+q.top().second+q.top().first-tmpx<=m)
		{
			p.push(y+x-tmpx);
			sum=sum+y+x-tmpx;
			tmpx=x;
			ans++;
		}
		else
		{
			int s=x-tmpx+y;
			int maxs=0;
			if(p.size())
			{
				maxs=p.top();
			}		
			if(s<maxs)
			{
				sum=sum+s-p.top();
				p.pop();
				p.push(s);
			}
		}	
		q.pop();		
	}
	cout<<ans;
	return 0;
}
2025/2/4 15:27
加载中...