请求加强数据
查看原帖
请求加强数据
733553
huangluyi2008楼主2023/1/15 19:33

这份暴力代码也能水过,而且跑得飞快。 这份代码最坏时间复杂度能达到O(q/2*w)。

#include <bits/stdc++.h>
using namespace std;
int n,q,x,op,ma,mi=1e9;
int b[1000005];
inline int read(){
	int x=0,f=1;
	char c=getchar();
	while(c>'9'||c<'0'){
		if(c=='-') f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=x*10+c-48;
		c=getchar();
	}
	return x*f;
}
inline void print(int x){
	if(x<0) putchar('-'),x=-x;
	if(x>9) print(x/10);
	putchar(x%10+48);
}
int main() {
	n=read(),q=read();
	for(int i=1;i<=n;++i){
		x=read();
		b[x]++;
		ma=max(ma,x);
		mi=min(mi,x);
	}
	while(q--){
		op=read(),x=read();
		if(op==1){
			if(b[x]){
				b[x]--;
				if(x==mi){
					for(int i=mi;i<=ma;++i){
						if(b[i]){
							mi=i;
							break;
						}
					}
				}else if(x==ma){
					for(int i=ma;i>=mi;--i){
						if(b[i]){
							ma=i;
							break;
						}
					}
				}
				print((ma-mi)*2);
				putchar('\n');
			}else{
				print(-1);
				putchar('\n');
			}
		}else{
			b[x]++;
			mi=min(mi,x);
			ma=max(ma,x);
			print((ma-mi)*2);
			putchar('\n');
		}
	}
	return 0;
}
2023/1/15 19:33
加载中...