Submission #1691862
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
typedef double db;
typedef long long ll;
#define w1 first
#define w2 second
#define ls (x<<1)
#define rs (x<<1|1)
#define pb push_back
#define mid ((l+r)>>1)
#define SZ(x) ((x).size())
#define All(x) (x).begin(),(x).end()
#define rep(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)
#define rep2(i,a,b) for(int (i)=(a);(i)<(b);(i)++)
#define per(i,a,b) for(int (i)=(a);(i)>=(b);(i)--)
#define Rep(p,x) for(int (p)=head[(x)];(p);(p)=nxt[(p)])
template<class T>void read(T&num){
num=0;T f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')num=num*10+ch-'0',ch=getchar();
num*=f;
}
int power(int x,int k,int p){int res=1;for(;k;k>>=1,x=1ll*x*x%p)if(k&1)res=1ll*res*x%p;return res;}
const int maxn=2e5+5,inf=1e9+10;
int n;
int tag[maxn<<2],mini[maxn<<2][2];
int pos[maxn];
set<int>used;
void U(int x){
rep(i,0,1)mini[x][i]=min(mini[ls][i],mini[rs][i]);
}
void B(int x,int l,int r){
mini[x][0]=mini[x][1]=inf;
if(l==r){
read(mini[x][l&1]);
pos[mini[x][l&1]]=l;
return;
}
B(ls,l,mid);B(rs,mid+1,r);
U(x);
}
void R(int x){
tag[x]^=1;
swap(mini[x][0],mini[x][1]);
}
void PD(int x){
if(!tag[x])return;
R(ls);R(rs);tag[x]^=1;
}
void R(int x,int l,int r,int ll,int rr){
if(ll>rr)return;
if(l==ll&&r==rr){
R(x);
return;
}
PD(x);
if(rr<=mid)R(ls,l,mid,ll,rr);
else if(ll>mid)R(rs,mid+1,r,ll,rr);
else R(ls,l,mid,ll,mid),R(rs,mid+1,r,mid+1,rr);
U(x);
}
void M(int x,int l,int r,int pos){
if(l==r){
mini[x][0]=mini[x][1]=inf;
return;
}
PD(x);
if(pos<=mid)M(ls,l,mid,pos);
else M(rs,mid+1,r,pos);
U(x);
}
int Q(int x,int l,int r,int ll,int rr,int i){
if(l==ll&&r==rr)return mini[x][i];
PD(x);
if(rr<=mid)return Q(ls,l,mid,ll,rr,i);
else if(ll>mid)return Q(rs,mid+1,r,ll,rr,i);
else return min(Q(ls,l,mid,ll,mid,i),Q(rs,mid+1,r,mid+1,rr,i));
}
int main(){
read(n);
B(1,1,n);
used.insert(n+1);
rep(i,1,n/2){
int minv=Q(1,1,n,1,n,1),now=pos[minv];
int r=*used.lower_bound(now)-1;
int secv=Q(1,1,n,now+1,r,0),nxt=pos[secv];
R(1,1,n,now+1,nxt-1);
M(1,1,n,now);
M(1,1,n,nxt);
printf("%d %d ",minv,secv);
used.insert(now);
used.insert(nxt);
}
return 0;
}
Submission Info
Submission Time |
|
Task |
E - Young Maids |
User |
Vegetable |
Language |
C++14 (GCC 5.4.1) |
Score |
800 |
Code Size |
2278 Byte |
Status |
AC |
Exec Time |
176 ms |
Memory |
19968 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
800 / 800 |
Status |
|
|
Set Name |
Test Cases |
Sample |
0_00.txt, 0_01.txt, 0_02.txt |
All |
0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt |
Case Name |
Status |
Exec Time |
Memory |
0_00.txt |
AC |
3 ms |
2432 KB |
0_01.txt |
AC |
1 ms |
256 KB |
0_02.txt |
AC |
2 ms |
2304 KB |
1_00.txt |
AC |
1 ms |
256 KB |
1_01.txt |
AC |
1 ms |
256 KB |
1_02.txt |
AC |
129 ms |
17024 KB |
1_03.txt |
AC |
117 ms |
17024 KB |
1_04.txt |
AC |
176 ms |
19968 KB |
1_05.txt |
AC |
168 ms |
19968 KB |
1_06.txt |
AC |
168 ms |
19968 KB |
1_07.txt |
AC |
163 ms |
19968 KB |
1_08.txt |
AC |
170 ms |
19968 KB |
1_09.txt |
AC |
108 ms |
19200 KB |
1_10.txt |
AC |
160 ms |
19968 KB |
1_11.txt |
AC |
112 ms |
19840 KB |
1_12.txt |
AC |
158 ms |
19584 KB |
1_13.txt |
AC |
165 ms |
19968 KB |
1_14.txt |
AC |
161 ms |
19840 KB |
1_15.txt |
AC |
161 ms |
19968 KB |
1_16.txt |
AC |
161 ms |
19840 KB |
1_17.txt |
AC |
164 ms |
19968 KB |
1_18.txt |
AC |
160 ms |
19840 KB |
1_19.txt |
AC |
160 ms |
19840 KB |