Submission #293353

#TimeUsernameProblemLanguageResultExecution timeMemory
293353XmtosXSecret (JOI14_secret)C++17
0 / 100
509 ms8440 KiB
#include <bits/stdc++.h>;
#include "secret.h"
using namespace std;
#define LL pos*2+1
#define RR pos*2+2
const int NN=1e3+3;
int a[NN],n,ans[NN][NN],l,r;
void solve(int st,int en)
{
    if (st>en)
        return;
    int mid=(st+en)/2;
    ans[mid][mid]=a[mid];
    ans[mid+1][mid+1]=a[mid+1];
    ans[mid][mid+1]=Secret(a[mid],a[mid+1]);
    for (int i=mid+2;i<=en;i++)
        ans[mid+1][i]=Secret(ans[mid+1][i-1],a[i]);
    for (int i=mid-1;i>=st;i--)
        ans[i][mid]=Secret(ans[i+1][mid],a[i]);
    solve(st,mid-1);
    solve(mid+1,en);
}
int query(int st,int en)
{
    int mid=(st+en)/2;
    if (mid>r)
        return query(st,mid-1);
    if (mid<l)
        return query(mid+1,en);
    if (r==mid||l==mid)
        return ans[l][r];
    return Secret(ans[l][mid],ans[mid+1][r]);
}
void Init(int N, int A[])
{
    n=N;
    for (int i=0;i<n;i++)
        a[i]=A[i];
    solve(0,n-1);
}
int Query(int L, int R)
{
    l=L;
    r=R;
    return query(0,n-1);
}
/*
8
1 4 7 2 5 8 3 6
4
0 3
1 7
5 5
2 4
*/

Compilation message (stderr)

secret.cpp:1:25: warning: extra tokens at end of #include directive
    1 | #include <bits/stdc++.h>;
      |                         ^
#Verdict Execution timeMemoryGrader output
Fetching results...