Submission #153488

# Submission time Handle Problem Language Result Execution time Memory
153488 2019-09-14T10:52:48 Z georgerapeanu Secret (JOI14_secret) C++11
100 / 100
588 ms 4560 KB
#include "secret.h"

using namespace std;

int stuff[20][1005];
int global_n;

void build(int stage,int st,int dr,int a[]){

    if(st == dr){
        stuff[stage][st] = a[st];
        return ;
    }

    int mid = (st + dr) / 2;

    stuff[stage][mid] = a[mid];
    stuff[stage][mid + 1] = a[mid + 1];

    for(int i = mid - 1;i >= st;i--){
        stuff[stage][i] = Secret(a[i],stuff[stage][i + 1]);
    }
    
    for(int i = mid + 2;i <= dr;i++){
        stuff[stage][i] = Secret(stuff[stage][i - 1],a[i]);
    }

    build(stage + 1,st,mid,a);
    build(stage + 1,mid + 1,dr,a);
}

int query(int stage,int st,int dr,int l,int r){
    
    int mid = (st + dr) / 2;

    if(l <= mid && mid <= r){
        if(r == mid){
            return stuff[stage][l];
        }
        return Secret(stuff[stage][l],stuff[stage][r]);
    }
    else if(mid < l){
        return query(stage + 1,mid + 1,dr,l,r);
    }
    else{
        return query(stage + 1,st,mid,l,r);
    }
}

void Init(int n, int a[]) {
    global_n = n;
    build(0,0,n - 1,a);
}

int Query(int l, int r) {
    return query(0,0,global_n - 1,l,r);
}
# Verdict Execution time Memory Grader output
1 Correct 169 ms 2424 KB Output is correct - number of calls to Secret by Init = 3578, maximum number of calls to Secret by Query = 1
2 Correct 166 ms 2460 KB Output is correct - number of calls to Secret by Init = 3586, maximum number of calls to Secret by Query = 1
3 Correct 167 ms 2564 KB Output is correct - number of calls to Secret by Init = 3595, maximum number of calls to Secret by Query = 1
4 Correct 581 ms 4440 KB Output is correct - number of calls to Secret by Init = 7969, maximum number of calls to Secret by Query = 1
5 Correct 581 ms 4496 KB Output is correct - number of calls to Secret by Init = 7978, maximum number of calls to Secret by Query = 1
6 Correct 581 ms 4384 KB Output is correct - number of calls to Secret by Init = 7978, maximum number of calls to Secret by Query = 1
7 Correct 583 ms 4560 KB Output is correct - number of calls to Secret by Init = 7978, maximum number of calls to Secret by Query = 1
8 Correct 582 ms 4528 KB Output is correct - number of calls to Secret by Init = 7978, maximum number of calls to Secret by Query = 1
9 Correct 587 ms 4276 KB Output is correct - number of calls to Secret by Init = 7978, maximum number of calls to Secret by Query = 1
10 Correct 588 ms 4256 KB Output is correct - number of calls to Secret by Init = 7978, maximum number of calls to Secret by Query = 1