제출 #445898

#제출 시각아이디문제언어결과실행 시간메모리
445898aryan12Bali Sculptures (APIO15_sculpture)C++17
71 / 100
1085 ms4684 KiB
#include <bits/stdc++.h> using namespace std; #define int long long mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count()); const int N = 2010; int arr[N]; int n, a, b; int Check(int val) { //cout << "val = " << val << "\n"; int dp[n + 2][b + 1]; for(int i = 0; i <= n + 1; i++) { for(int j = 0; j <= b; j++) { dp[i][j] = 0; } } dp[1][0] = 1; for(int i = 1; i <= n; i++) { for(int j = 0; j < b; j++) { if(dp[i][j] == 0) { continue; } /*if(val == 9) { cout << "i = " << i << ", j = " << j << ", dp[i][j] has been deemed true\n"; }*/ for(int k = i; k <= n; k++) { int tot = arr[k] - arr[i - 1]; if((val ^ tot) == (val - tot)) { dp[k + 1][j + 1] = 1; /*if(val == 9) { cout << "dp[i][j] goes to dp[" << k + 1 << "][" << j + 1 << "]\n"; }*/ } } } } /*if(val == 9) { for(int i = 1; i <= n + 1; i++) { for(int j = 0; j <= b; j++) { cout << dp[i][j] << " "; } cout << "\n"; } }*/ for(int i = a; i <= b; i++) { if(dp[n + 1][i] == 1) { return 1; } } return 0; } void Solve() { cin >> n >> a >> b; arr[0] = 0; for(int i = 1; i <= n; i++) { cin >> arr[i]; arr[i] += arr[i - 1]; } int ans = (1LL << 40) - 1; for(int i = 39; i >= 0; i--) { //cout << "i = " << i << "\n"; //cout << "ans = " << ans << "\n"; //cout << " "; ans ^= (1LL << i); if(Check(ans) == 0) { ans ^= (1LL << i); } //cout << "Finally, answer = " << ans << "\n"; } //cout << " "; cout << ans << "\n"; } int32_t main() { auto begin = std::chrono::high_resolution_clock::now(); ios_base::sync_with_stdio(0); cin.tie(0); int t = 1; //cin >> t; while(t--) { Solve(); } auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\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...