Submission #497861

#TimeUsernameProblemLanguageResultExecution timeMemory
497861amukkalirBali Sculptures (APIO15_sculpture)C++17
21 / 100
5 ms348 KiB
#include <bits/stdc++.h> 
using namespace std; 
typedef long long ll; 

#define pii pair<int,int> 
#define fi first 
#define se second

const ll INF = LLONG_MAX; 
const int nax = 100; 

ll dp[nax+5][nax+5]; 
ll p[nax+5]; 
int n; 

ll f (int rem, int idx) {
    if(idx==n+1) return (rem==0)?0:INF; 
    if(rem<=0) return INF; 

    ll &res = dp[rem][idx]; 
    if(~res) return res; 

    res = INF; 
    for(int i=idx; i<=n; i++) {
        res = min(res, p[i]-p[idx-1] | f(rem-1, i+1)); 
    }

    return res; 
}

signed main () {
    int a, b; 

    scanf("%d%d%d", &n, &a, &b); 
    for(int i=1; i<=n; i++) {
        ll y; scanf("%lld", &y); 
        p[i] = p[i-1] + y; 
    }

    ll ans = INF; 
    memset(dp, -1, sizeof dp); 

    for(int i=a; i<=b; i++) {
        ans = min(ans, f(i, 1)); 
        //cout << i << " " << f(i, 0) << endl; 
    }

    printf("%lld", ans); 
}

/*
YES
3 1 3 
YES
1 
NO
YES
5 5 4 1 4 5 
*/

Compilation message (stderr)

sculpture.cpp: In function 'll f(int, int)':
sculpture.cpp:25:28: warning: suggest parentheses around arithmetic in operand of '|' [-Wparentheses]
   25 |         res = min(res, p[i]-p[idx-1] | f(rem-1, i+1));
      |                        ~~~~^~~~~~~~~
sculpture.cpp: In function 'int main()':
sculpture.cpp:34:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   34 |     scanf("%d%d%d", &n, &a, &b);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~
sculpture.cpp:36:20: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   36 |         ll y; scanf("%lld", &y);
      |               ~~~~~^~~~~~~~~~~~
#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...