QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#920524 | #21403. 文艺平衡树 | wanglianda# | WA | 1ms | 8012kb | C++14 | 1.6kb | 2025-02-28 16:24:45 | 2025-02-28 16:24:52 |
Judging History
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 '