Submission #1318657

#TimeUsernameProblemLanguageResultExecution timeMemory
1318657khanhphucscratchBali Sculptures (APIO15_sculpture)C++20
50 / 100
100 ms452 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int flipbit(int num, int bit)
{
    return num ^ (1ll << bit);
}
int a[2005], dp[2005];
bool check(int x, int n, int l, int r)
{
    dp[0] = 0;
    for(int i = 1; i <= n; i++){
        dp[i] = 1e18;
        int cursum = 0;
        for(int j = i; j >= 1; j--){
            cursum += a[j];
            if((cursum & x) == cursum) dp[i] = min(dp[i], dp[j-1] + 1);
        }
    }
    return dp[n] <= r;
}
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    /*n <= 2000 but l = 1*/
    int n, l, r; cin>>n>>l>>r;
    for(int i = 1; i <= n; i++) cin>>a[i];
    int ans = (1ll << 50)-1;
    for(int i = 49; i >= 0; i--){
        ans = flipbit(ans, i);
        if(check(ans, n, l, r) == 0) ans = flipbit(ans, i); //Submask binary search technique
    }
    cout<<ans;
}
#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...