Submission #469955

#TimeUsernameProblemLanguageResultExecution timeMemory
469955luciocfBali Sculptures (APIO15_sculpture)C++14
0 / 100
1 ms332 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 2e3+10; const ll inf = 1e18; int n; int a[maxn]; ll pref[maxn]; ll dp[maxn][maxn]; int opt[maxn]; void solve(int l, int r, int k) { if (l > r) return; int mid = (l+r)>>1; dp[k][mid] = inf; for (int i = opt[l-1]; i <= min(mid, opt[r+1]); i++) if ((dp[k-1][i-1] | (pref[mid] - pref[i-1])) <= dp[k][mid]) dp[k][mid] = (dp[k-1][i-1] | (pref[mid] - pref[i-1])), opt[mid] = i; solve(l, mid-1, k); solve(mid+1, r, k); } int main(void) { int A, B; scanf("%d %d %d", &n, &A, &B); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); pref[i] = pref[i-1] + 1ll*a[i]; } for (int i = 1; i <= n; i++) dp[0][i] = inf; for (int i = 1; i <= n; i++) { opt[0] = 1, opt[n+1] = n; solve(1, n, i); } ll ans = inf; for (int i = A; i <= B; i++) ans = min(ans, dp[i][n]); printf("%lld\n", ans); }

Compilation message (stderr)

sculpture.cpp: In function 'int main()':
sculpture.cpp:36:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   36 |  scanf("%d %d %d", &n, &A, &B);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
sculpture.cpp:40:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |   scanf("%d", &a[i]);
      |   ~~~~~^~~~~~~~~~~~~
#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...