제출 #1318656

#제출 시각아이디문제언어결과실행 시간메모리
1318656khanhphucscratchBali Sculptures (APIO15_sculpture)C++20
71 / 100
32 ms504 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[105], dp[105][105];
bool check(int x, int n, int l, int r)
{
    dp[0][0] = 1;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            dp[i][j] = 0;
            int cursum = 0;
            for(int k = i; k >= 1; k--){
                cursum += a[k];
                if((cursum & x) == cursum) dp[i][j] |= dp[k-1][j-1];
            }
        }
    }
    bool ans = 0;
    for(int i = l; i <= r; i++) ans |= dp[n][i];
    return ans;
}
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    /*n <= 100 but no constraint on l*/
    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...