Submission #1135863

#TimeUsernameProblemLanguageResultExecution timeMemory
1135863ThanhsSecret (JOI14_secret)C++20
0 / 100
379 ms11888 KiB
#include <bits/stdc++.h>
#include "secret.h"
using namespace std;

#define name "TENBAI"
#define fi first
#define se second
// #define int long long
#define endl '\n'
#define setmin(x, y) x = min((x), (y))
#define setmax(x, y) x = max((x), (y))
#define sqr(x) ((x) * (x))

mt19937 hdp(chrono::high_resolution_clock::now().time_since_epoch().count());
int rand(int l, int r){return l + ((hdp() % (r - l + 1)) + r - l + 1) % (r - l + 1);}

const int NM = 1e3 + 5;

map<pair<int, int>, int> mp;
int n, a[NM], sum = 0;
pair<int, int> b[NM][NM];

// int Secret(int x, int y)
// {
//     return x + y;
// }

void dnc(int l, int r)
{
    if (l >= r)
        return;
    int m = l + r >> 1;
    for (int i = m - 1; i >= l; i--)
        mp[{i, m}] = Secret(a[i], mp[{i + 1, m}]);
    for (int i = m + 2; i <= r; i++)
        mp[{m + 1, i}] = Secret(mp[{m + 1, i - 1}], a[i]);
    for (int i = l; i <= m; i++)
        for (int j = m + 1; j <= r; j++)
            b[i][j] = {mp[{i, m}], mp[{m + 1, j}]};
    dnc(l, m); 
    dnc(m + 1, r);
}

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

int Query(int l, int r)
{
    l++; r++;
    if (l == r)
        return a[l];
    return Query(b[l][r].fi, b[l][r].se);
}

// signed main()
// {
//     Init(2, );
//     cout << Query(0, 1);
// }
#Verdict Execution timeMemoryGrader output
Fetching results...