Submission #6259733
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
int read(){
int a = 0; char c = getchar();
while(!isdigit(c)) c = getchar();
while(isdigit(c)){
a = a * 10 + c - 48; c = getchar();
}
return a;
}
const int _ = 2e5 + 7;
int val[_] , cnt[_] , N;
bool cmp(int a , int b){return a > b;}
struct segTree{
int mx[_ << 2];
void init(){memset(mx , -0x3f , sizeof(mx));}
#define mid ((l + r) >> 1)
#define lch (x << 1)
#define rch (x << 1 | 1)
void modify(int x , int l , int r , int tar , int val){
if(l == r){mx[x] = val; return;}
mid >= tar ? modify(lch , l , mid , tar , val) : modify(rch , mid + 1 , r , tar , val);
mx[x] = max(mx[lch] , mx[rch]);
}
int qry(int x, int l , int r , int L , int R){
if(l >= L && r <= R) return mx[x];
int Mx = -1e9;
if(mid >= L) Mx = qry(lch , l , mid , L , R);
if(mid < R) Mx = max(Mx , qry(rch , mid + 1 , r , L , R));
return Mx;
}
}T1 , T2;
bool check(int pos , int Mx1 , int Mx2 , int cnt1 , int cnt2){
int V1 = cnt1 + cnt[pos] - cnt2 , V2 = cnt2 + cnt[pos] - cnt1;
if(V1 >= 0)
if(V1 & 1){if(T1.qry(1 , 1 , N , Mx2 , N) >= V1) return 1;}
else if(T2.qry(1 , 1 , N , Mx2 , N) >= V1) return 1;
if(V2 >= 0)
if(V2 & 1){if(T1.qry(1 , 1 , N , Mx1 , N) >= V2) return 1;}
else if(T2.qry(1 , 1 , N , Mx1 , N) >= V2) return 1;
return 0;
}
int main(){
N = read();
int pre = 0;
for(int i = 1 ; i <= N ; ++i){
val[i] = read(); cnt[i] = val[i] > pre;
pre = max(pre , val[i]);
}
for(int i = N ; i ; --i) cnt[i] += cnt[i + 1];
T1.init();
for(int i = N ; i ; --i){
int p0 = T1.qry(1 , 1 , N , val[i] , N) , p1 = T2.qry(1 , 1 , N , val[i] , N);
if(cnt[i] > cnt[i + 1]){
T1.modify(1 , 1 , N , val[i] , p0 + 2);
T2.modify(1 , 1 , N , val[i] , p1 + 2);
}
else{
T1.modify(1 , 1 , N , val[i] , p1 + 1);
T2.modify(1 , 1 , N , val[i] , p0 + 1);
}
}
vector < int > arr1 , arr2; string s;
int Mx1 = 1 , Mx2 = 1 , cnt1 = 0 , cnt2 = 0;
for(int i = 1 ; i <= N ; ++i){
T1.modify(1 , 1 , N , val[i] , -1e9);
T2.modify(1 , 1 , N , val[i] , 0);
if(check(i + 1 , max(Mx1 , val[i]) , Mx2 , cnt1 + (Mx1 <= val[i]) , cnt2)){
arr1.push_back(val[i]); cnt1 += Mx1 <= val[i]; Mx1 = max(Mx1 , val[i]);
s.push_back('0');
}
else{
arr2.push_back(val[i]); cnt2 += Mx2 <= val[i]; Mx2 = max(Mx2 , val[i]);
s.push_back('1');
}
}
if(cnt1 == cnt2) cout << s;
else cout << -1;
return 0;
}
Submission Info
| Submission Time |
|
| Task |
E - High Elements |
| User |
Itst |
| Language |
C++14 (GCC 5.4.1) |
| Score |
1400 |
| Code Size |
2465 Byte |
| Status |
AC |
| Exec Time |
166 ms |
| Memory |
9720 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
1400 / 1400 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt |
| All |
sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, subtask01-01.txt, subtask01-02.txt, subtask01-03.txt, subtask01-04.txt, subtask01-05.txt, subtask01-06.txt, subtask01-07.txt, subtask01-08.txt, subtask01-09.txt, subtask01-10.txt, subtask01-11.txt, subtask01-12.txt, subtask01-13.txt, subtask01-14.txt, subtask01-15.txt, subtask01-16.txt, subtask01-17.txt, subtask01-18.txt, subtask01-19.txt, subtask01-20.txt, subtask01-21.txt, subtask01-22.txt, subtask01-23.txt, subtask01-24.txt, subtask01-25.txt, subtask01-26.txt, subtask01-27.txt, subtask01-28.txt, subtask01-29.txt, subtask01-30.txt, subtask01-31.txt, subtask01-32.txt, subtask01-33.txt, subtask01-34.txt, subtask01-35.txt, subtask01-36.txt, subtask01-37.txt, subtask01-38.txt, subtask01-39.txt, subtask01-40.txt, subtask01-41.txt, subtask01-42.txt, subtask01-43.txt, subtask01-44.txt, subtask01-45.txt, subtask01-46.txt, subtask01-47.txt, subtask01-48.txt, subtask01-49.txt, subtask01-50.txt |
| Case Name |
Status |
Exec Time |
Memory |
| sample-01.txt |
AC |
2 ms |
4480 KiB |
| sample-02.txt |
AC |
2 ms |
4480 KiB |
| sample-03.txt |
AC |
2 ms |
4480 KiB |
| sample-04.txt |
AC |
2 ms |
4480 KiB |
| subtask01-01.txt |
AC |
2 ms |
4480 KiB |
| subtask01-02.txt |
AC |
59 ms |
6908 KiB |
| subtask01-03.txt |
AC |
36 ms |
5760 KiB |
| subtask01-04.txt |
AC |
22 ms |
5248 KiB |
| subtask01-05.txt |
AC |
81 ms |
7156 KiB |
| subtask01-06.txt |
AC |
83 ms |
7416 KiB |
| subtask01-07.txt |
AC |
123 ms |
9208 KiB |
| subtask01-08.txt |
AC |
3 ms |
4480 KiB |
| subtask01-09.txt |
AC |
67 ms |
7040 KiB |
| subtask01-10.txt |
AC |
41 ms |
6780 KiB |
| subtask01-11.txt |
AC |
54 ms |
6908 KiB |
| subtask01-12.txt |
AC |
33 ms |
5864 KiB |
| subtask01-13.txt |
AC |
51 ms |
6900 KiB |
| subtask01-14.txt |
AC |
59 ms |
7036 KiB |
| subtask01-15.txt |
AC |
28 ms |
5760 KiB |
| subtask01-16.txt |
AC |
3 ms |
4480 KiB |
| subtask01-17.txt |
AC |
15 ms |
5248 KiB |
| subtask01-18.txt |
AC |
73 ms |
7416 KiB |
| subtask01-19.txt |
AC |
42 ms |
6780 KiB |
| subtask01-20.txt |
AC |
15 ms |
5248 KiB |
| subtask01-21.txt |
AC |
28 ms |
5888 KiB |
| subtask01-22.txt |
AC |
26 ms |
5760 KiB |
| subtask01-23.txt |
AC |
56 ms |
6912 KiB |
| subtask01-24.txt |
AC |
123 ms |
9212 KiB |
| subtask01-25.txt |
AC |
144 ms |
9464 KiB |
| subtask01-26.txt |
AC |
166 ms |
9464 KiB |
| subtask01-27.txt |
AC |
158 ms |
9456 KiB |
| subtask01-28.txt |
AC |
154 ms |
9468 KiB |
| subtask01-29.txt |
AC |
133 ms |
9464 KiB |
| subtask01-30.txt |
AC |
154 ms |
9464 KiB |
| subtask01-31.txt |
AC |
147 ms |
9464 KiB |
| subtask01-32.txt |
AC |
142 ms |
9460 KiB |
| subtask01-33.txt |
AC |
121 ms |
9464 KiB |
| subtask01-34.txt |
AC |
146 ms |
9464 KiB |
| subtask01-35.txt |
AC |
133 ms |
9516 KiB |
| subtask01-36.txt |
AC |
128 ms |
9452 KiB |
| subtask01-37.txt |
AC |
115 ms |
9464 KiB |
| subtask01-38.txt |
AC |
127 ms |
9464 KiB |
| subtask01-39.txt |
AC |
122 ms |
9592 KiB |
| subtask01-40.txt |
AC |
118 ms |
9592 KiB |
| subtask01-41.txt |
AC |
114 ms |
9464 KiB |
| subtask01-42.txt |
AC |
120 ms |
9464 KiB |
| subtask01-43.txt |
AC |
121 ms |
9720 KiB |
| subtask01-44.txt |
AC |
111 ms |
9464 KiB |
| subtask01-45.txt |
AC |
146 ms |
9464 KiB |
| subtask01-46.txt |
AC |
142 ms |
9464 KiB |
| subtask01-47.txt |
AC |
137 ms |
9388 KiB |
| subtask01-48.txt |
AC |
103 ms |
9720 KiB |
| subtask01-49.txt |
AC |
155 ms |
9468 KiB |
| subtask01-50.txt |
AC |
148 ms |
9464 KiB |