제출 #125927

#제출 시각아이디문제언어결과실행 시간메모리
125927jakob_noglerBali Sculptures (APIO15_sculpture)C++14
37 / 100
11 ms504 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<bool> vb; typedef vector<vb> vvb; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n, a, b; cin >> n >> a >> b; vi val(n); for(int i = 0; i < n; i++) cin >> val[i]; ll curr = 0; if(a == 1){ for(int i = 31; i >= 0; i--){ vi cnt(n + 1, n + 1); cnt[0] = 0; for(int j = 0; j < n; j++){ ll sum = 0; for(int k = j; k < n; k++){ sum += val[k]; if(((sum >> i) | (curr >> i)) == (curr >> i)) cnt[k + 1] = min(cnt[k + 1], cnt[j] + 1); } } if(cnt[n] > b) curr |= (1 << i); } } else{ for(int i = 31; i >= 0; i--){ vvb mat(n + 1, vb(n + 1)); mat[0][0] = true; for(int j = 0; j < n; j++){ ll sum = 0; for(int k = j; k < n; k++){ sum += val[k]; if(((sum >> i) | (curr >> i)) == (curr >> i)){ for(int l = 0; l < n; l++) if(mat[j][l]) mat[k + 1][l + 1] = true; } } } bool ans = false; for(int j = a; j <= b; j++) ans |= mat[n][j]; if(!ans) curr |= (1 << i); } } cout << curr << 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...