QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#792384 | #21403. 文艺平衡树 | RDFZchenyy | WA | 0ms | 3660kb | C++14 | 1.9kb | 2024-11-29 09:45:03 | 2024-11-29 09:45:04 |
Judging History
answer
#include<bits/stdc++.h>
#define ls t[id].so[0]
#define rs t[id].so[1]
struct Node{
int so[2];
int rnd,val;
int sz,rev;
};
#define MAXN 100005
int n,m,l,r;
int a[MAXN];
Node t[MAXN*10]; int nc=0;
int rt;
int nnode(int val){
t[++nc].val=val;
t[nc].rnd=rand();
t[nc].so[0]=t[nc].so[1]=0;
t[nc].sz=1;
return nc;
}
void tag(int id){
t[id].rev^=1;
std::swap(ls,rs);
return;
}
void pdown(int id){
if(t[id].rev){
tag(ls),tag(rs);
t[id].rev=false;
}
return;
}
void update(int id){
t[id].sz=t[ls].sz+t[rs].sz+1;
return;
}
int merge(int x,int y){
if((!x)||(!y)) return (x+y);
pdown(x),pdown(y);
if(t[x].rnd<t[y].rnd){
t[x].so[1]=merge(t[x].so[1],y),update(x);
return x;
}else{
t[y].so[0]=merge(x,t[y].so[0]),update(y);
return y;
}
}
void split(int id,int k,int& a,int& b){
if((!id)){
a=b=0;
return;
}
int lsz=t[ls].sz;
if(k<=lsz){
b=id,split(t[id].so[0],k,a,t[id].so[0]);
}else{
a=id,split(t[id].so[1],k-lsz-1,t[id].so[1],b);
}
update(id);
return;
}
void output(int id){
// std::cout<<id<<' ';
if(!id) return;
// std::cout<<"O"<<' '<<id<<' '<<ls<<' '<<rs<<'\n';
pdown(id);
output(ls);
std::cout<<t[id].val<<' ';
output(rs);
return;
}
int main(){
std::ios::sync_with_stdio(false);
std::cin>>n>>m;
for(int i=1;i<=n;i++) rt=merge(rt,nnode(i));
// std::cout<<"RT"<<' '<<rt<<'\n';
// for(int i=1;i<=n;i++){
// std::cout<<t[i].so[0]<<' '<<t[i].so[1]<<'\n';
// std::cout<<t[i].val<<'\n';
// }
for(int i=1;i<=m;i++){
std::cin>>l>>r;
int x,y,z;
split(rt,r,y,z),split(y,l-1,x,y);
tag(y);
rt=merge(merge(x,y),z);
// std::cout<<"RT"<<' '<<rt<<'\n';
for(int i=1;i<=n;i++){
// std::cout<<t[i].so[0]<<' '<<t[i].so[1]<<'\n';
// std::cout<<t[i].val<<'\n';
// std::cout<<t[i].rev<<'\n';
}
}
output(rt);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3660kb
input:
30 5 7 26 7 18 5 9 4 15 3 15
output:
1 2 4 11 12 13 6 5 10 19 20 21 22 23 3 24 25 26 18 17 16 15 14 9 8 7 27 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 4 11 12 13 6 5 10 19 20 21... 17 16 15 14 9 8 7 27 28 29 30 '