全RE求调
查看原帖
全RE求调
1592928
lee_liang楼主2025/6/15 22:15

看着“线段树”的算法标签狂写线段树,re得不知不觉,没感觉有错,调也调不出来

应该是线段树没玩明白

大佬求调

代码:

#include <bits/stdc++.h>
#define ull unsigned long long 
#define ls(i) i<<1
#define rs(i) i<<1|1
#define mid l+r>>1
#define int long long //十年OI一场空,不开long long见祖宗
using namespace std;
using ll=long long;
inline void read(int& a) {
	int w=1;char c;a=0;
	while((c=getchar())<'0'||c>'9')if(c=='-')w=-1;
	do a=a*10+(c^48); while((c=getchar())>='0'&&c<='9');
	a*=w;
}
void write(int x){
	if(x<0)putchar('-'),x=-x;
	if(x>9)write(x/10);
	putchar(x%10+'0');
	return ;
}
const int N=1e9;
struct node{
	int l,r,val;
};
node d[N];
int a[N];
int n,m,k,s,si;
void pushup(int now){
	d[now].val=d[rs(now)].val+d[ls(now)].val;
}
void build(int now,int l,int r){
	d[now].l=l,d[now].r=r;
	if(l==r){d[now].val=a[l];return;}
	build(ls(now),l,mid);
	build(rs(now),mid+1,r);
	pushup(now);
}
void updata(int now){
	if(d[now].l==d[now].r){
		if(d[now].l+k>=m)a[d[now].l+k]=d[now].val;
		else s+=d[now].val;
		d[now].val=0;
		return;
	}
	updata(ls(now));
	updata(rs(now));
}
void in(int now,int z){
	if(d[now].l==d[now].r){d[now].val++;return;}
	int miid=(d[now].l+d[now].r)>>1;
	if(z<=miid)in(ls(now),z);
	else in(rs(now),z);
	pushup(now);
}
int query(int now,int k){
	if(d[now].val<k)return -1;
	if(d[now].l==d[now].r)return d[now].l;
	if(d[ls(now)].val>=k)return query(ls(now),k);
	else return query(rs(now),k-d[ls(now)].val);
}
signed main() {
	read(n),read(m);
	build(1,m,2e5);
	for(int i=1;i<=n;i++){
		char o;
		int k;
		cin>>o;
		read(k);
		if(o=='I')if(k>=m)in(1,k),si++;
		else if(o=='A' or o=='S')if(o=='S')k=-k,updata(1),build(1,m,2e5);
		else if(o=='F'){
			if(k>si-s)cout<<-1<<endl;
			else write(query(1,si-s-k+1)),cout<<endl;}
	}
	write(s);
	return 0;
}
//
//              ⠀⢸⣿⣿⣿⠀⣼⣿⣿⣦⡀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⠀ ⠀⢸⣿⣿⡟⢰⣿⣿⣿⠟⠁
// ⠀⠀⠀⠀⠀⠀⠀⢰⣿⠿⢿⣦⣀⠀⠘⠛⠛⠃⠸⠿⠟⣫⣴⣶⣾⡆
// ⠀⠀⠀⠀⠀⠀⠀⠸⣿⡀⠀⠉⢿⣦⡀⠀⠀⠀⠀⠀⠀ ⠛⠿⠿⣿⠃
// ⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⠀⠀⠹⣿⣶⡾⠛⠛⢷⣦⣄⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣧⠀⠀⠈⠉⣀⡀⠀ ⠀⠙⢿⡇
// ⠀⠀⠀⠀⠀⠀⢀⣠⣴⡿⠟⠋⠀⠀⢠⣾⠟⠃⠀⠀⠀⢸⣿⡆
// ⠀⠀⠀⢀⣠⣶⡿⠛⠉⠀⠀⠀⠀⠀⣾⡇⠀⠀⠀⠀⠀⢸⣿⠇
// ⢀⣠⣾⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⢀⣼⣧⣀⠀⠀⠀⢀⣼⠇
// ⠈⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠙⠛⠛⠛⠛⠛⠁
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣾⡿⠋⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢾⠿⠋⠀
2025/6/15 22:15
加载中...