Submission #1310488

#TimeUsernameProblemLanguageResultExecution timeMemory
1310488em4ma2Secret (JOI14_secret)C++20
0 / 100
334 ms4452 KiB
#include "bits/stdc++.h"
#include "secret.h"

//#include "secret.h"

// #include <stdio.h>
// #include <stdlib.h>

// #define MAX_N                  1000
// #define MAX_Q                 10000
// #define MAX_VALUE        1000000000

// static int N;
// static int A[MAX_N];
// static int Q;
// static int L[MAX_Q];
// static int R[MAX_Q];

// static int secret_count;

// int Secret(int X, int Y) {
//   ++secret_count;
//   if (!(0 <= X && X <= MAX_VALUE)) {
//     fprintf(stderr, "Wrong Answer [1]\n");
//     exit(0);
//   }
//   if (!(0 <= Y && Y <= MAX_VALUE)) {
//     fprintf(stderr, "Wrong Answer [1]\n");
//     exit(0);
//   }
//   return (X + 2 * (Y / 2) < MAX_VALUE) ? (X + 2 * (Y / 2)) : MAX_VALUE;
// }




using namespace std;

//#define int long long
#define ll long long
#define pb push_back

const int mxsz=1026;

int dst[11][mxsz];

int Query(int l,int r){
    int x=__builtin_clz(max(l,r))-(l^r);
    return Secret(dst[l][x],dst[r][x]);
}

// int rec(int n,int a[]){

// }

void Init(int n,int a[]){
    int cnt=2;
    int x=(log2(n)+1);
    int N=1;
    while (x--){
        N*=2;
    }
    vector<int>A;
    for (int i=0;i<n;i++){
        A.pb(a[i]);
    }
    for (int i=n;i<N;i++){
        A.pb(0);
    }
    for (int i=0;i<11;i++){
        int k=i+1;
        while (k--){
            int mx=n/cnt;
            int cnt2=0;
            int b=0;
            if (!b){
                for (int j=cnt2+mx;j>cnt2;j--){
                    if (j==cnt2+mx)dst[i][j]=A[j];
                    else dst[i][j]=Secret(dst[i][j-1],A[j]);
                }
                cnt2+=mx;
                b^=1;
            }else{
                for (int j=cnt2;j<cnt2+mx;j++){
                    if (j==cnt2)dst[i][j]=A[j];
                    else dst[i][j]=Secret(dst[i][j-1],A[j]);
                }
                cnt2+=mx;
            }
        }
        cnt*=2;
    }
}


// signed main(){
//     ios::sync_with_stdio(0);
//     cin.tie(0);
//     cout.tie(0);

//     int n;
//     cin>>n;
//     int a[n];
//     for (int i=0;i<n;i++){
//         cin>>a[i];
//     }
//     Init(n,a);
//     int q;
//     cin>>q;
//     while (q--){
//         int l,r;
//         cin>>l>>r;
//         cout<<Query(l,r)<<endl;
//     }
//     return 0;
// }
#Verdict Execution timeMemoryGrader output
Fetching results...