why 25pts WA???
查看原帖
why 25pts WA???
315205
Kniqht楼主2023/8/27 22:51
#include<bits/stdc++.h> 
#define int long long
using namespace std;
const int N=2e5+10;
int T,m,n,a[N],len,s[N],q[N],l,r;
int query(int x){
	x+=len; 
	int l=1,r=n;
	while(l<r){
		int mid=l+r+1>>1;
		if(s[mid]<=x) l=mid;
		else r=mid-1;
	}
	return s[l]==x?a[l]:x-s[l];
}
signed main(){
	scanf("%lld%lld",&T,&m);int opt,x;
	while(m--){	
		scanf("%lld",&opt);
		if(opt==1){
			scanf("%lld",&x);
			a[++n]=x;
			s[n]=s[n-1]+a[n];
			while(l<r&&a[q[r]]<a[n]) r--;
			q[++r]=n;
		}
		else if(opt==2){
			scanf("%lld",&x),len+=x;
			while(l<r&&s[q[l]]<=len) l++;
		}
		else if(opt==3) scanf("%lld",&x),printf("%lld\n",query(x));
		else printf("%lld\n",a[q[l]]);
	}
    return 0;   
}

用了单调队列+二分,怎么Wa了

2023/8/27 22:51
加载中...