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...