Submission #1192248

#TimeUsernameProblemLanguageResultExecution timeMemory
1192248julia_08Bali Sculptures (APIO15_sculpture)C++20
71 / 100
27 ms484 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

const int MAXN = 110;

int y[MAXN], dp[MAXN][MAXN];

ll s[MAXN];

int main(){
  cin.tie(0)->sync_with_stdio(0);

  int n, a, b; cin >> n >> a >> b;

  for(int i=1; i<=n; i++){
    cin >> y[i];
    s[i] = s[i - 1] + y[i];
  }

  ll ans = 0, bits = 0;

  for(int bit=40; bit>=0; bit--){

    bits += (1LL << bit);

    for(int k=0; k<=n; k++){
      for(int i=0; i<=n; i++){
        dp[k][i] = 1;
      }
    }

    dp[0][0] = 0;

    for(int k=1; k<=n; k++){
      for(int i=1; i<=n; i++){
        for(int j=0; j<i; j++){

          ll sum = s[i] - s[j];

          if((sum & bits) != 0) continue;
          dp[k][i] &= dp[k - 1][j];

        }
      }
    }

    bits -= (1LL << bit);

    bool ok = false;
    for(int k=a; k<=b; k++) if(!dp[k][n]) ok = true;

    if(ok){
      bits += (1LL << bit);

    } else ans += (1LL << bit);

  }

  cout << ans << "\n";

  return 0;
}
#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...