求助,为何还有30的re点
查看原帖
求助,为何还有30的re点
72572
zkt2楼主2021/10/16 12:01
#include<iostream>//双向队列
#include<cstdio>
#include<deque>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std; 
long long a[400000];
deque<long long> q;
long long n,m,k,sum=0;
int main()
{
    freopen("P7505.in","r",stdin);
	freopen("P7505.out","w",stdout);
	scanf("%lld%lld%lld",&n,&m,&k);
	for(int i=1;i<=n;i++)
	   cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=n;i>=1;i--)
	  q.push_front(a[i]);
	for(int i=1;i<=m;i++)
	{
	    int kk;
		cin>>kk;
		long long lenth=q.size();
		if(kk==1)
		{
		    long long start=0,zk=lenth,lk=lenth;
		    long long aa;
			cin>>aa;
			sum+=aa;
		    while(lk!=0)
		    {
			    long long z=q.back();
				if(z+sum>k)
				{zk--;
				q.pop_back();
				  start++;
				  continue;}
				else
				  break;
		    }
			q.resize(zk);
		}
		if(kk==2)
		{
		    long long start=0,zk=lenth;
		    long long aa;
		    cin>>aa;
			sum-=aa;
		    while(start+1<=lenth)
		    {
		        long long z=q.front();
				if(z+sum<-k)
				{
				  zk--;
				  q.pop_front();
				  start++;
				  continue;
				  }
				else
				 break;
		    }
			q.resize(zk);
		}
		if(kk==3)
		{
		   cout<<q.size()<<endl;
		}
	}
	return 0;
}
2021/10/16 12:01
加载中...