Submission details
Task:Interview
Sender:Häviö Life
Submission time:2015-09-16 17:26:33 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.06 sdetails
#4ACCEPTED0.06 sdetails
#5ACCEPTED0.11 sdetails
#6ACCEPTED0.10 sdetails
#7ACCEPTED0.10 sdetails
#8ACCEPTED0.10 sdetails
#9ACCEPTED0.13 sdetails
#10ACCEPTED0.11 sdetails
#11ACCEPTED0.12 sdetails
#12ACCEPTED0.12 sdetails
#13ACCEPTED0.10 sdetails
#14ACCEPTED0.11 sdetails
#15ACCEPTED0.10 sdetails
#16ACCEPTED0.10 sdetails
#17ACCEPTED0.10 sdetails
#18ACCEPTED0.06 sdetails
#19ACCEPTED0.05 sdetails
#20ACCEPTED0.05 sdetails
#21ACCEPTED0.06 sdetails
#22ACCEPTED0.05 sdetails
#23ACCEPTED0.06 sdetails
#24ACCEPTED0.05 sdetails
#25ACCEPTED0.05 sdetails
#26ACCEPTED0.05 sdetails
#27ACCEPTED0.05 sdetails
#28ACCEPTED0.06 sdetails
#29ACCEPTED0.05 sdetails
#30ACCEPTED0.06 sdetails
#31ACCEPTED0.06 sdetails
#32ACCEPTED0.06 sdetails
#33ACCEPTED0.06 sdetails
#34ACCEPTED0.07 sdetails
#35ACCEPTED0.09 sdetails
#36ACCEPTED0.08 sdetails
#37ACCEPTED0.10 sdetails

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 s_max[2*N];
int s_min[2*N];

void set_val_max(int i, int val){
    i+=N;
    s_max[i]=val;
    i/=2;
    while(i){
        s_max[i]=max(s_max[2*i],s_max[2*i+1]);
        i/=2;
    }
}

void set_val_min(int i, int val){
    i+=N;
    s_min[i]=val;
    i/=2;
    while(i){
        s_min[i]=min(s_min[2*i],s_min[2*i+1]);
        i/=2;
    }
}

int query_max(int l, int r){
    int v=0;
    l+=N;r+=N;

    while(l<r){
        if(l%2==1){
            v=max(v,s_max[l]);
            l++;
        }
        if(r%2==0){
            v=max(v,s_max[r]);
            r--;
        }
        r/=2;l/=2;
    }
    if(l==r)
        v=max(v,s_max[l]);
    return v;
}

int query_min(int l, int r){
    int v=0;
    l+=N;r+=N;

    while(l<r){
        if(l%2==1){
            v=min(v,s_min[l]);
            l++;
        }
        if(r%2==0){
            v=min(v,s_min[r]);
            r--;
        }
        r/=2;l/=2;
    }
    if(l==r)
        v=min(v,s_min[l]);
    return v;
}



int main(){
    int h;
    cin>>h;
    int n=1;
    for(int i=0; i<h; i++)
        n*=2;

    for(int i=0; i<n; i++){
        int x;
        cin>>x;
        set_val_max(i,x);
        set_val_min(i,x);
    }
    for(int i=n; i<N; i++){
        set_val_max(i,2000000001);
        set_val_min(i,2000000001);
    }

    int vast=0;
    for(int i=N-1; i>0; i--){
        if(s_max[2*i]<=s_min[2*i+1]){

        }else{
            if(s_min[2*i]>=s_max[2*i+1]){
                vast++;
            }else{
                cout<<"QAQ"<<endl;
                return 0;
            }
        }
    }
    cout<<vast<<endl;
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
3
5 6 6 7 2 1 4 5

correct output
2

user output
2

Test 2

Verdict: ACCEPTED

input
2
1000 100 10 1

correct output
3

user output
3

Test 3

Verdict: ACCEPTED

input
2
1 4 2 3

correct output
QAQ

user output
QAQ

Test 4

Verdict: ACCEPTED

input
4
38 48 31 29 9 2 25 23 60 63 67...

correct output
7

user output
7

Test 5

Verdict: ACCEPTED

input
17
125327615 125311457 125338848 ...

correct output
58869

user output
58869

Test 6

Verdict: ACCEPTED

input
17
528159436 528155011 528165801 ...

correct output
70714

user output
70714

Test 7

Verdict: ACCEPTED

input
17
514083812 514081465 514080093 ...

correct output
82479

user output
82479

Test 8

Verdict: ACCEPTED

input
17
642975535 642974649 642980533 ...

correct output
94267

user output
94267

Test 9

Verdict: ACCEPTED

input
17
999999983 999999983 999999983 ...

correct output
352

user output
352

Test 10

Verdict: ACCEPTED

input
17
999999965 999999965 999999965 ...

correct output
265

user output
265

Test 11

Verdict: ACCEPTED

input
17
999999951 999999951 999999951 ...

correct output
202

user output
202

Test 12

Verdict: ACCEPTED

input
17
999999989 999999989 999999989 ...

correct output
135

user output
135

Test 13

Verdict: ACCEPTED

input
17
999999950 999999950 999999950 ...

correct output
58

user output
58

Test 14

Verdict: ACCEPTED

input
17
999999994 999999994 999999994 ...

correct output
96

user output
96

Test 15

Verdict: ACCEPTED

input
17
999999993 999999993 999999993 ...

correct output
70

user output
70

Test 16

Verdict: ACCEPTED

input
17
999999991 999999991 999999991 ...

correct output
44

user output
44

Test 17

Verdict: ACCEPTED

input
17
999999990 999999990 999999990 ...

correct output
14

user output
14

Test 18

Verdict: ACCEPTED

input
0
7

correct output
0

user output
0

Test 19

Verdict: ACCEPTED

input
1
8 63

correct output
0

user output
0

Test 20

Verdict: ACCEPTED

input
2
45 34 61 72

correct output
1

user output
1

Test 21

Verdict: ACCEPTED

input
3
21 27 66 68 81 73 91 95

correct output
1

user output
1

Test 22

Verdict: ACCEPTED

input
4
9 2 20 25 28 26 49 39 74 58 50...

correct output
7

user output
7

Test 23

Verdict: ACCEPTED

input
5
32 27 36 34 42 49 38 39 4 5 9 ...

correct output
11

user output
11

Test 24

Verdict: ACCEPTED

input
6
71 70 66 70 64 65 62 62 59 59 ...

correct output
28

user output
28

Test 25

Verdict: ACCEPTED

input
7
16 14 17 19 22 22 20 20 23 23 ...

correct output
30

user output
30

Test 26

Verdict: ACCEPTED

input
8
78 78 76 76 78 78 78 78 82 83 ...

correct output
73

user output
73

Test 27

Verdict: ACCEPTED

input
9
3 3 4 4 4 4 4 4 6 6 6 6 5 5 5 ...

correct output
84

user output
84

Test 28

Verdict: ACCEPTED

input
10
28 28 28 28 28 28 28 28 28 29 ...

correct output
119

user output
119

Test 29

Verdict: ACCEPTED

input
11
93 93 93 93 93 93 93 93 93 93 ...

correct output
161

user output
161

Test 30

Verdict: ACCEPTED

input
12
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 ...

correct output
192

user output
192

Test 31

Verdict: ACCEPTED

input
13
21 21 21 21 21 21 21 21 21 21 ...

correct output
260

user output
260

Test 32

Verdict: ACCEPTED

input
14
13 13 13 13 13 13 13 13 13 13 ...

correct output
303

user output
303

Test 33

Verdict: ACCEPTED

input
15
90 90 90 90 90 90 90 90 90 90 ...

correct output
332

user output
332

Test 34

Verdict: ACCEPTED

input
16
37 37 37 37 37 37 37 37 37 37 ...

correct output
354

user output
354

Test 35

Verdict: ACCEPTED

input
17
10 10 10 10 10 10 10 10 10 10 ...

correct output
399

user output
399

Test 36

Verdict: ACCEPTED

input
17
30 30 30 30 30 30 30 30 30 30 ...

correct output
QAQ

user output
QAQ

Test 37

Verdict: ACCEPTED

input
17
530333517 530335373 530344723 ...

correct output
QAQ

user output
QAQ