Task: | Zigzag |
Sender: | Häviö Life |
Submission time: | 2015-09-16 16:52:41 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.07 s | details |
#2 | ACCEPTED | 0.10 s | details |
#3 | ACCEPTED | 0.12 s | details |
#4 | ACCEPTED | 0.08 s | details |
#5 | ACCEPTED | 0.08 s | details |
#6 | ACCEPTED | 0.09 s | details |
#7 | ACCEPTED | 0.10 s | details |
#8 | ACCEPTED | 0.09 s | details |
#9 | ACCEPTED | 0.09 s | details |
#10 | ACCEPTED | 0.10 s | details |
#11 | ACCEPTED | 0.09 s | details |
#12 | ACCEPTED | 0.10 s | details |
#13 | ACCEPTED | 0.10 s | details |
#14 | ACCEPTED | 0.09 s | details |
#15 | ACCEPTED | 0.11 s | details |
#16 | ACCEPTED | 0.11 s | details |
#17 | ACCEPTED | 0.10 s | details |
#18 | ACCEPTED | 0.13 s | details |
#19 | ACCEPTED | 0.13 s | details |
#20 | ACCEPTED | 0.12 s | details |
#21 | ACCEPTED | 0.11 s | details |
#22 | ACCEPTED | 0.09 s | details |
#23 | ACCEPTED | 0.05 s | details |
Code
#include <iostream> #include <vector> #include <stack> #include <queue> #include <algorithm> #include <cmath> #include <iomanip> #include <unordered_set> #include <stdio.h> #include <string.h> #include <unordered_map> #include <fstream> #include <set> #include <map> #define MOD 1000000007 #define ll long long #define N (1<<17) #define float double using namespace std; int nytA[2*N]; int nytY[2*N]; void set_val(int i, int val, int *spuu){ i+=N; spuu[i]=val; i/=2; while(i){ spuu[i]=max(spuu[2*i],spuu[2*i+1]); i/=2; } } int query_max(int l, int r, int* spuu){ int v=0; l+=N;r+=N; while(l<r){ if(l%2==1){ v=max(v,spuu[l]); l++; } if(r%2==0){ v=max(v,spuu[r]); r--; } r/=2;l/=2; } if(l==r) v=max(v,spuu[l]); return v; } int m_pre[100000]; int m_cp[100000]; int m[100000]; int main(){ int n; cin>>n; for(int i=0; i<n; i++) cin>>m_pre[i]; for(int i=0; i<n; i++) m_cp[i]=m_pre[i]; sort(m_pre,m_pre+n); unordered_map<int,int> comp; int temp=0; comp[m_pre[0]]=temp; for(int i=1; i<n; i++){ if(m_pre[i]!=m_pre[i+1]){ temp++; comp[m_pre[i]]=temp; } } for(int i=0; i<n; i++) m[i]=comp[m_cp[i]]; int vast=0; for(int i=0; i<n; i++){ int yl=query_max(0,m[i]-1,nytA) + 1; int al=query_max(m[i]+1,100001,nytY)+1; vast=max(vast,max(yl,al)); set_val(m[i], yl, nytY); set_val(m[i], al, nytA); } cout<<vast<<endl; return 0; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
26914
209563339 493138663 352519700 ... |
correct output |
---|
17861 |
user output |
---|
17861 |
Test 2
Verdict: ACCEPTED
input |
---|
69623
448426297 297876050 307483466 ... |
correct output |
---|
46402 |
user output |
---|
46402 |
Test 3
Verdict: ACCEPTED
input |
---|
74436
633012861 731816315 697620472 ... |
correct output |
---|
49602 |
user output |
---|
49602 |
Test 4
Verdict: ACCEPTED
input |
---|
40279
561990353 513856090 901866509 ... |
correct output |
---|
26955 |
user output |
---|
26955 |
Test 5
Verdict: ACCEPTED
input |
---|
51496
683270487 631068160 190804676 ... |
correct output |
---|
34326 |
user output |
---|
34326 |
Test 6
Verdict: ACCEPTED
input |
---|
97124
1000007 1000006 1000003 100000... |
correct output |
---|
61495 |
user output |
---|
61495 |
Test 7
Verdict: ACCEPTED
input |
---|
91945
1000005 1000005 1000006 100000... |
correct output |
---|
58521 |
user output |
---|
58521 |
Test 8
Verdict: ACCEPTED
input |
---|
96629
1000004 1000010 1000003 100001... |
correct output |
---|
61327 |
user output |
---|
61327 |
Test 9
Verdict: ACCEPTED
input |
---|
92161
1000042 1000001 1000055 100001... |
correct output |
---|
60962 |
user output |
---|
60962 |
Test 10
Verdict: ACCEPTED
input |
---|
96806
1000057 1000002 1000011 100006... |
correct output |
---|
64127 |
user output |
---|
64127 |
Test 11
Verdict: ACCEPTED
input |
---|
99118
1000084 1000083 1000002 100008... |
correct output |
---|
66012 |
user output |
---|
66012 |
Test 12
Verdict: ACCEPTED
input |
---|
98412
1000959 1000993 1000257 100064... |
correct output |
---|
65720 |
user output |
---|
65720 |
Test 13
Verdict: ACCEPTED
input |
---|
90443
1000341 1000111 1000853 100021... |
correct output |
---|
60148 |
user output |
---|
60148 |
Test 14
Verdict: ACCEPTED
input |
---|
94265
1000087 1000461 1000534 100020... |
correct output |
---|
62824 |
user output |
---|
62824 |
Test 15
Verdict: ACCEPTED
input |
---|
91433
1001939 1009857 1000325 100505... |
correct output |
---|
60938 |
user output |
---|
60938 |
Test 16
Verdict: ACCEPTED
input |
---|
96457
1005466 1001970 1000639 100288... |
correct output |
---|
64111 |
user output |
---|
64111 |
Test 17
Verdict: ACCEPTED
input |
---|
91928
1003162 1008129 1007967 100683... |
correct output |
---|
61129 |
user output |
---|
61129 |
Test 18
Verdict: ACCEPTED
input |
---|
96494
1076481 1008804 1047323 102583... |
correct output |
---|
64214 |
user output |
---|
64214 |
Test 19
Verdict: ACCEPTED
input |
---|
98136
1025253 1017437 1050227 105377... |
correct output |
---|
65345 |
user output |
---|
65345 |
Test 20
Verdict: ACCEPTED
input |
---|
90294
1098032 1037085 1089672 105311... |
correct output |
---|
60164 |
user output |
---|
60164 |
Test 21
Verdict: ACCEPTED
input |
---|
100000
19836 85811 67650 86807 50191 ... |
correct output |
---|
66639 |
user output |
---|
66639 |
Test 22
Verdict: ACCEPTED
input |
---|
100000
999999998 999999999 999999996 ... |
correct output |
---|
59975 |
user output |
---|
59975 |
Test 23
Verdict: ACCEPTED
input |
---|
11
1000000000 1000000000 10000000... |
correct output |
---|
4 |
user output |
---|
4 |