求如何优化,75pts,超时
查看原帖
求如何优化,75pts,超时
672223
szlh_yanlikun楼主2023/8/27 22:01
#include<bits/stdc++.h>
using namespace std;
int c,q,sum,tp=1;
int a[200005][2];
multiset<int> s;
int main()
{
	//freopen("x.in","r",stdin);
	//freopen("x.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>c>>q;
	while(q--)
	{
		int op;
		cin>>op;
		if(op==1)
		{
			int x;
			cin>>x;
			a[++sum][0]=1;
			a[sum][1]=x;
			s.insert(x);
		}
		if(op==2)
		{
			int y;
			cin>>y;
			if(sum==0)
				continue;
			int i=tp;
			while(1)
			{
				if(a[i][1]-a[i][0]+1>y)
				{
					a[i][0]+=y;
					break;
				}
				if(a[i][1]-a[i][0]+1==y)
				{
					tp=i+1;
					s.erase(s.find(a[i][1]));
					break;
				}
				y-=(a[i][1]-a[i][0]+1);
				s.erase(s.find(a[i][1]));
				i++;
				tp=i;
			}
		}
		if(op==3)
		{
			int z;
			cin>>z;
			int i=tp;
			while(1)
			{
				if(a[i][1]-a[i][0]+1>=z)
				{
					cout<<a[i][0]+z-1<<"\n";
					break;
				}
				z-=(a[i][1]-a[i][0]+1);
				i++;
			}
		}
		if(op==4)
		{
			set<int>::iterator it=s.end();
			it--;
			cout<<*it<<"\n";
		}
	}
	return 0;
}
2023/8/27 22:01
加载中...