Submission #250715

#TimeUsernameProblemLanguageResultExecution timeMemory
250715jovan_bBali Sculptures (APIO15_sculpture)C++17
37 / 100
1 ms384 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; int n, a, b; bool moze[105][105]; int niz[2005]; int mn[2005]; bool check(int k){ if(a > 1){ moze[0][0] = 1; for(int i=1; i<=100; i++){ for(int j=0; j<=100; j++){ moze[i][j] = 0; } } for(int i=1; i<=n; i++){ ll sum = 0; for(int j=i; j>=1; j--){ sum += niz[j]; if((sum | k) == k){ for(int turns=1; turns<=b; turns++){ moze[i][turns] |= moze[j-1][turns-1]; } } } } for(int i=a; i<=b; i++) if(moze[n][i]) return 1; return 0; } for(int i=1; i<=n; i++){ mn[i] = b+5; } for(int i=1; i<=n; i++){ ll sum = 0; for(int j=i; j>=1; j--){ sum += niz[j]; if((sum | k) == k){ mn[i] = min(mn[i], mn[j-1]+1); } } } return mn[n] <= b; } int main(){ ios_base::sync_with_stdio(false), cin.tie(0); cout.precision(10); cout << fixed; cin >> n >> a >> b; for(int i=1; i<=n; i++){ cin >> niz[i]; } int res = 0; for(int j=30; j>=0; j--){ if(!check(res+(1<<j)-1)) res += (1<<j); } cout << res; 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...