| Task: | Zigzag |
| Sender: | OOliOO_slayer |
| Submission time: | 2015-09-16 18:33:23 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | WRONG ANSWER | 0.05 s | details |
| #2 | WRONG ANSWER | 0.06 s | details |
| #3 | WRONG ANSWER | 0.06 s | details |
| #4 | WRONG ANSWER | 0.05 s | details |
| #5 | WRONG ANSWER | 0.05 s | details |
| #6 | WRONG ANSWER | 0.06 s | details |
| #7 | WRONG ANSWER | 0.05 s | details |
| #8 | WRONG ANSWER | 0.06 s | details |
| #9 | WRONG ANSWER | 0.06 s | details |
| #10 | WRONG ANSWER | 0.06 s | details |
| #11 | WRONG ANSWER | 0.06 s | details |
| #12 | WRONG ANSWER | 0.05 s | details |
| #13 | WRONG ANSWER | 0.06 s | details |
| #14 | WRONG ANSWER | 0.07 s | details |
| #15 | WRONG ANSWER | 0.06 s | details |
| #16 | WRONG ANSWER | 0.05 s | details |
| #17 | WRONG ANSWER | 0.07 s | details |
| #18 | WRONG ANSWER | 0.06 s | details |
| #19 | WRONG ANSWER | 0.06 s | details |
| #20 | WRONG ANSWER | 0.06 s | details |
| #21 | WRONG ANSWER | 0.06 s | details |
| #22 | WRONG ANSWER | 0.06 s | details |
| #23 | ACCEPTED | 0.06 s | details |
Code
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <map>
#include <utility>
#include <set>
typedef long long LL;
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n; cin >> n;
vector<int> v;
for(int i = 0; i < n; i++){
int x; cin >> x; v.push_back(x);
}
vector<int> up(n), down(n), psv(n), pgv(n);
up[0] = 1;
down[0] = 1;
psv[0] = -1; pgv[0] = -1;
for(int i = 1; i < n; i++){
if(v[i] == v[i-1]){
up[i] = up[i-1];
down[i] = down[i-1];
psv[i] = psv[i-1];
pgv[i] = pgv[i-1];
continue;
}
else if(v[i] > v[i-1]){
// Increasing
psv[i] = i-1;
int prev = pgv[i-1]; // Search for prev greater
while(prev != -1 && v[prev] <= v[i]){
prev = pgv[prev];
}
pgv[i] = prev;
}
else if(v[i] < v[i-1]){
// Decreasing
pgv[i] = i-1;
int prev = psv[i-1];
while(prev != -1 && v[prev] >= v[i]){
prev = psv[prev];
}
psv[i] = prev;
}
up[i] = psv[i] == -1 ? 1 : down[psv[i]] + 1;
down[i] = pgv[i] == -1 ? 1 : up[pgv[i]] + 1;
}
/*for(auto x : psv) cout << x << " "; cout << endl;
for(auto x : pgv) cout << x << " "; cout << endl;
for(auto x : up) cout << x << " "; cout << endl;
for(auto x : down) cout << x << " "; cout << endl;*/
int ans = 0;
for(int i = 0; i < n; i++){
ans = max(ans,up[i]);
ans = max(ans,down[i]);
}
cout << ans << endl;
}
Test details
Test 1
Verdict: WRONG ANSWER
| input |
|---|
| 26914
209563339 493138663 352519700 ... |
| correct output |
|---|
| 17861 |
| user output |
|---|
| 13289 |
Test 2
Verdict: WRONG ANSWER
| input |
|---|
| 69623
448426297 297876050 307483466 ... |
| correct output |
|---|
| 46402 |
| user output |
|---|
| 34535 |
Test 3
Verdict: WRONG ANSWER
| input |
|---|
| 74436
633012861 731816315 697620472 ... |
| correct output |
|---|
| 49602 |
| user output |
|---|
| 37247 |
Test 4
Verdict: WRONG ANSWER
| input |
|---|
| 40279
561990353 513856090 901866509 ... |
| correct output |
|---|
| 26955 |
| user output |
|---|
| 20406 |
Test 5
Verdict: WRONG ANSWER
| input |
|---|
| 51496
683270487 631068160 190804676 ... |
| correct output |
|---|
| 34326 |
| user output |
|---|
| 25372 |
Test 6
Verdict: WRONG ANSWER
| input |
|---|
| 97124
1000007 1000006 1000003 100000... |
| correct output |
|---|
| 61495 |
| user output |
|---|
| 48379 |
Test 7
Verdict: WRONG ANSWER
| input |
|---|
| 91945
1000005 1000005 1000006 100000... |
| correct output |
|---|
| 58521 |
| user output |
|---|
| 46551 |
Test 8
Verdict: WRONG ANSWER
| input |
|---|
| 96629
1000004 1000010 1000003 100001... |
| correct output |
|---|
| 61327 |
| user output |
|---|
| 48863 |
Test 9
Verdict: WRONG ANSWER
| input |
|---|
| 92161
1000042 1000001 1000055 100001... |
| correct output |
|---|
| 60962 |
| user output |
|---|
| 45481 |
Test 10
Verdict: WRONG ANSWER
| input |
|---|
| 96806
1000057 1000002 1000011 100006... |
| correct output |
|---|
| 64127 |
| user output |
|---|
| 48040 |
Test 11
Verdict: WRONG ANSWER
| input |
|---|
| 99118
1000084 1000083 1000002 100008... |
| correct output |
|---|
| 66012 |
| user output |
|---|
| 49528 |
Test 12
Verdict: WRONG ANSWER
| input |
|---|
| 98412
1000959 1000993 1000257 100064... |
| correct output |
|---|
| 65720 |
| user output |
|---|
| 48724 |
Test 13
Verdict: WRONG ANSWER
| input |
|---|
| 90443
1000341 1000111 1000853 100021... |
| correct output |
|---|
| 60148 |
| user output |
|---|
| 45264 |
Test 14
Verdict: WRONG ANSWER
| input |
|---|
| 94265
1000087 1000461 1000534 100020... |
| correct output |
|---|
| 62824 |
| user output |
|---|
| 47798 |
Test 15
Verdict: WRONG ANSWER
| input |
|---|
| 91433
1001939 1009857 1000325 100505... |
| correct output |
|---|
| 60938 |
| user output |
|---|
| 46072 |
Test 16
Verdict: WRONG ANSWER
| input |
|---|
| 96457
1005466 1001970 1000639 100288... |
| correct output |
|---|
| 64111 |
| user output |
|---|
| 48305 |
Test 17
Verdict: WRONG ANSWER
| input |
|---|
| 91928
1003162 1008129 1007967 100683... |
| correct output |
|---|
| 61129 |
| user output |
|---|
| 46089 |
Test 18
Verdict: WRONG ANSWER
| input |
|---|
| 96494
1076481 1008804 1047323 102583... |
| correct output |
|---|
| 64214 |
| user output |
|---|
| 48214 |
Test 19
Verdict: WRONG ANSWER
| input |
|---|
| 98136
1025253 1017437 1050227 105377... |
| correct output |
|---|
| 65345 |
| user output |
|---|
| 48434 |
Test 20
Verdict: WRONG ANSWER
| input |
|---|
| 90294
1098032 1037085 1089672 105311... |
| correct output |
|---|
| 60164 |
| user output |
|---|
| 45180 |
Test 21
Verdict: WRONG ANSWER
| input |
|---|
| 100000
19836 85811 67650 86807 50191 ... |
| correct output |
|---|
| 66639 |
| user output |
|---|
| 50299 |
Test 22
Verdict: WRONG ANSWER
| input |
|---|
| 100000
999999998 999999999 999999996 ... |
| correct output |
|---|
| 59975 |
| user output |
|---|
| 50437 |
Test 23
Verdict: ACCEPTED
| input |
|---|
| 11
1000000000 1000000000 10000000... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
