Submission #1298890

#TimeUsernameProblemLanguageResultExecution timeMemory
1298890AbdullahIshfaqBali Sculptures (APIO15_sculpture)C++20
100 / 100
63 ms580 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
    int N, A, B;
    cin >> N >> A >> B;
    vector<ll> ages(N + 1);
    for (int i = 1; i <= N; ++i)
        cin >> ages[i];
    ll mask = (1LL << 41) - 1;
    vector<ll> L(N + 1), R(N + 1);
    for (int bit = 40; bit >= 0; --bit)
    {
        mask ^= (1LL << bit);
        for (int i = 1; i <= N; i++)
        {
            L[i] = 1e9, R[i] = -1e9;
            ll s = 0;
            for (int j = i - 1; j >= 0; j--)
            {
                s += ages[j + 1];
                if ((s & mask) == s)
                {
                    L[i] = min(L[i], L[j] + 1);
                    R[i] = max(R[i], R[j] + 1);
                }
            }
        }
        if (!(A <= R[N] && L[N] <= B))
        {
            mask ^= (1LL << bit);
        }
    }
    cout << mask << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...