Submission #1305492

#TimeUsernameProblemLanguageResultExecution timeMemory
1305492ElayV13Bali Sculptures (APIO15_sculpture)C++20
0 / 100
1 ms580 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int INF = 1e18; signed main(){ int n , l , r; cin >> n >> l >> r; vector < int > a(n + 1); for(int i = 1;i <= n;i++) cin >> a[i]; vector < pair < int , pair < int , int > > > rng; for(int i = 1;i <= n;i++) { int s = 0; for(int j = i;j <= n;j++) { s += a[j]; rng.push_back({s , {i , j}}); } } vector < vector < int > > dp(n + 1 , vector < int > (n * n , INF)); for(int i = 0;i < rng.size();i++) { if(rng[i].second.first == 1) dp[1][i] = rng[i].first; } for(int cnt = 2;cnt <= n;cnt++) { for(int i = 0;i < rng.size();i++) { for(int j = 0;j < rng.size();j++) { if(rng[i].second.first == rng[j].second.second + 1) dp[cnt][i] = min(dp[cnt][i] , dp[cnt - 1][j] | rng[i].first); } } } int res = INF; for(int cnt = l;cnt <= r;cnt++) { for(int i = 0;i < rng.size();i++) { if(rng[i].second.second == n) res = min(res , dp[cnt][i]); } } cout << res << 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...