蒟蒻0分求助
查看原帖
蒟蒻0分求助
1101962
xiao12chen楼主2024/1/12 19:17
#include<iostream>
#include<cstdio>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#include<stack>
#include<deque>
using namespace std;
deque<long long>a;
int n,m,k,s,yi;
int main(){
	//输入 
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		int ss;
		cin>>ss;
		a.push_back(ss);
	}//升序排序
	sort(a.begin(),a.end());
	//输入 
	for(int i=1;i<=m;i++){
		cin>>s;
		//右移 
		if(s==1){
			//偏移量 
			int x;
			cin>>x;
			yi+=x;
			//从后往前加上偏移量判断是否出局,如果不出局,就加上偏移量 
			int l=a.size();
			int j=l-1;
			while(!a.empty()){
				j=a.size()-1;
				if(a[j]+yi>k){
					a.pop_back();
				}else break;
			}
		}//左移 
		if(s==2){
			//偏移量 
			int x;
			cin>>x;
			yi-=x;
			//从前往后减去偏移量判断是否出局,如果不出局,就减去偏移量 
			int l=a.size(); 
			int j=0;
			while(!a.empty()){
				if(a[j]-yi<k){
					a.pop_front();
				}else break;
			}
		}//输出
		if(s==3)cout<<a.size()<<endl; 
	} 
	return 0;
}
2024/1/12 19:17
加载中...