| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 25484 | gabrielsimoes | Bali Sculptures (APIO15_sculpture) | C++14 | 1000 ms | 9856 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef signed char sc;
typedef long long ll;
#define most(a) (sc(63 - __builtin_clzll(a)))
const int MAXN = 2001;
const sc MINLOG = -1;
const sc MAXLOG = 44;
int N, A, B;
ll v[MAXN];
ll x;
bool ok[MAXN][MAXN];
sc dp[MAXN][MAXN];
sc cost(int i, int j) {
ll a = (v[j] - v[i-1])&(~x);
if (a != 0) return most(a);
else return MINLOG;
}
sc f(int i, int g) {
if (i > N)
return (g < A | g > B)?MAXLOG:MINLOG;
if (ok[i][g]) return dp[i][g];
ok[i][g] = 1;
dp[i][g] = MAXLOG;
for (int j = i; j <= N; j++)
dp[i][g] = min(dp[i][g], max(cost(i, j), f(j+1, g+1)));
return dp[i][g];
}
int main()
{
scanf("%d %d %d", &N, &A, &B);
for (int i = 1; i <= N; i++)
scanf("%d", &x), v[i] = v[i-1] + x;
x = 0;
sc lim = most(v[N]) + 1;
while (lim > 0) {
memset(ok, 0, sizeof(ok));
lim = f(1, 0);
if (lim != MINLOG)
x |= (1LL << lim);
}
printf("%lld\n", x);
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
