Submission #1179782

#TimeUsernameProblemLanguageResultExecution timeMemory
1179782paulxaxaSecret (JOI14_secret)C++17
0 / 100
343 ms8276 KiB
#include <bits/stdc++.h>

#include "secret.h"

#define NMAX 1000
#define LOG 9

#define ll long long int
#define BASE 32


#define MOD 998244353


using namespace std;

ifstream fin("cod.in");
ofstream fout("cod.out");

int pref[NMAX+1][NMAX+1];
int n;

int a[NMAX+1];
void divide(int st,int dr)
{
    int m = (st+dr)/2;
    pref[m][m] = a[m];
    for(int i=m-1;i>=st;i--)
    {
        pref[i][m] = Secret(a[i],pref[i+1][m]);
    }
    for(int i=m+1;i<=dr;i++)
    {
        pref[m][i] = Secret(a[i],pref[m][i-1]);
    }
    if(st<m)
    {
        divide(st,m);
    }
    if(m+1<dr)
    {
        divide(m+1,dr);
    }
}

void Init(int N,int A[])
{
    n=N;
    for(int i=1;i<=n;i++)
    {
        a[i] = A[i-1];
    }

    divide(1,N);
}

int Query(int L,int R)
{
    int st=1;
    int dr=n;
    L++;
    R++;
    while(st<dr)
    {
        int m = (st+dr)/2;
        if(L<=m && m+1<=R)
        {
            return Secret(pref[L][m],pref[m+1][R]);
        }
        if(R<=m)
        {
            dr=m;
        }
        else
        {
            st=m+1;
        }
    }
    return pref[st][st];
}
//int main()
//{
//
//
//}
#Verdict Execution timeMemoryGrader output
Fetching results...