#include #include using namespace std; int n, a[1000001]; //shifted by one bool used[1000003];int lr[1000003]; void read() { //cin>>n; cin>>n; for(int i=1;i<=n;i++) { //cin>>a[i]; cin>>a[i]; } } void solve() { int pointer=1; for(int i=1;i<=n;i++) { int c=a[i]+1; if(!used[c]) { used[c]=1; bool cond1=(lr[c-1]==0); bool cond2=(lr[c+1]==0); int rw=0, left, right; //...0000_x_00000... if(cond1&&cond2) { lr[c]=c; rw=c+1; } //...1111_x_00000... else if((!cond1)&&cond2) { if(lr[c-1]<=(c-1)) { int left=lr[c-1]; int right=c; lr[c-1]=0; lr[c+1]=0; lr[left]=right; lr[right]=left; rw=right+1; } } //...0000_x_1111... else if((cond1)&&(!cond2)) { if(lr[c+1]>=(c+1)) { int left=c; int right=lr[c+1]; lr[c-1]=0; lr[c+1]=0; lr[left]=right; lr[right]=left; rw=right+1; } } //...1111_x_1111... else if((!cond1)&&(!cond2)) { int left=lr[c-1]; int right=lr[c+1]; lr[c-1]=0; lr[c+1]=0; lr[left]=right; lr[right]=left; rw=right+1; } if(c==pointer) { pointer=rw; } } //cout<