Submission #1192870

#TimeUsernameProblemLanguageResultExecution timeMemory
1192870enzyBali Sculptures (APIO15_sculpture)C++20
0 / 100
32 ms31752 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=2001;
const int inf=1e15+7;
int v[maxn], sp[maxn], dp[maxn][maxn]; // dp[pos][qtd], posição autal(a ser calculada) e qtd de grupos já divididos
signed main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
    int n, a, b; cin >> n >> a >> b;
    for(int i=1;i<=n;i++){
        cin >> v[i];
        sp[i]=sp[i-1]+v[i];
    }
    for(int i=0;i<maxn;i++)
        for(int j=0;j<maxn;j++) dp[j][i]=inf;
    dp[0][0]=0;
    for(int i=1;i<=n;i++){ // brutando a posição atual
        for(int j=i;j>=1;j--){ // brutando aonde eu vou quebrar o grupo atual
            for(int k=0;k<i;k++){ // brutando qnts grupos já foram feitos
                dp[i][k+1]=min(dp[i][k+1],(dp[j-1][k]|(sp[i]-sp[j-1])));
            }
        }
    }
    int resp=inf;
    for(int i=a;i<=b;i++) resp=min(resp,dp[n][i]);
    cout << resp << 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...