QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#920524#21403. 文艺平衡树wanglianda#WA 1ms8012kbC++141.6kb2025-02-28 16:24:452025-02-28 16:24:52

Judging History

This is the latest submission verdict.

  • [2025-02-28 16:24:52]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 8012kb
  • [2025-02-28 16:24:45]
  • Submitted

answer

#include<bits/stdc++.h>
#define ll long long 
#define low(X) (X&(-X))
#define mk(A,B) make_pair(A,B)
using namespace std;
ll read(){
	ll S=0,F=1;
	char ch=getchar();
	while(!isdigit(ch)){
		if(ch=='-')F*=-1;
		ch=getchar();
	}while(isdigit(ch)){
		S=(S<<3)+(S<<1)+(ch^48);
		ch=getchar();
	}return S*F;;
}const ll N=2e5,MOD=998244353;
namespace fhq{
	ll tg[N+10],ls[N+10],rs[N+10],siz[N+10],sed[N+10];
	void update(ll id){
		tg[id]^=1;
		swap(ls[id],rs[id]);
	}void pushup(ll id){
		siz[id]=siz[ls[id]]+siz[rs[id]]+1;
	}void pushdown(ll id){
		if(!tg[id])return;
		tg[id]=0;
		update(ls[id]);update(rs[id]);
	}ll build(ll l,ll r){
		if(l>r)return 0;
		ll mid=(l+r)>>1;
		sed[mid]=rand();
		ls[mid]=build(l,mid-1);
		rs[mid]=build(mid+1,r);
		pushup(mid);return mid;
	}void split(ll id,ll sz,ll &l,ll &r){
		if(!id){
			l=r=0;return;
		}pushdown(id);
		if(siz[ls[id]]<sz){
			l=id;split(rs[id],sz-siz[ls[id]]-1,rs[id],r);
		}else{
			r=id;split(ls[id],sz,l,ls[id]);
		}pushup(id);
	}ll merge(ll l,ll r){
		if(!l||!r)return l|r;
		pushdown(l);pushdown(r);
		if(sed[l]<sed[r]){
			rs[l]=merge(rs[l],r);
			pushup(l);return l;
		}else{
			ls[r]=merge(l,ls[r]);
			pushup(r);return r;
		}
	}void print(ll id){
		if(!id)return;
		pushdown(id);
		print(ls[id]);
		printf("%lld ",id);
		print(rs[id]);
		return;
	}
}ll rt,n,m,lth,mid,rth;
int main(){
	n=read();rt=fhq::build(1,n);m=read();
	while(m--){
		ll l=read();ll r=read();
		fhq::split(rt,l,lth,rth);
		fhq::split(rth,r-l+1,mid,rth);
		fhq::update(mid);
		rt=fhq::merge(fhq::merge(lth,mid),rth);
	}fhq::print(rt);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 8012kb

input:

30 5
7 26
7 18
5 9
4 15
3 15

output:

1 2 3 5 18 17 16 7 6 19 20 21 22 23 24 4 25 26 27 15 14 13 12 11 10 9 8 28 29 30 

result:

wrong answer 1st lines differ - expected: '1 2 4 17 16 15 6 5 18 19 20 21...4 13 12 11 10 9 8 7 27 28 29 30', found: '1 2 3 5 18 17 16 7 6 19 20 21 ...15 14 13 12 11 10 9 8 28 29 30 '