# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
25485 | 2017-06-22T12:01:28 Z | gabrielsimoes | Bali Sculptures (APIO15_sculpture) | C++14 | 0 ms | 9860 KB |
#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]; } bool oka1[MAXN]; sc dpa1[MAXN]; sc fa1(int i) { if (i > N) return MINLOG; if (oka1[i]) return dpa1[i]; oka1[i] = 1; dpa1[i] = MAXLOG; for (int j = i; j <= N; j++) dpa1[i] = min(dpa1[i], max(cost(i, j), fa1(j+1))); return dpa1[i]; } 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) { if (A != 1) memset(ok, 0, sizeof(ok)); else memset(oka1, 0, sizeof(oka1)); lim = A != 1 ? f(1, 0) : fa1(1); if (lim != MINLOG) x |= (1LL << lim); } printf("%lld\n", x); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 9860 KB | Output is correct |
2 | Correct | 0 ms | 9860 KB | Output is correct |
3 | Correct | 0 ms | 9860 KB | Output is correct |
4 | Correct | 0 ms | 9860 KB | Output is correct |
5 | Incorrect | 0 ms | 9860 KB | Output isn't correct |
6 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 9860 KB | Output is correct |
2 | Correct | 0 ms | 9860 KB | Output is correct |
3 | Correct | 0 ms | 9860 KB | Output is correct |
4 | Correct | 0 ms | 9860 KB | Output is correct |
5 | Incorrect | 0 ms | 9860 KB | Output isn't correct |
6 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 9860 KB | Output is correct |
2 | Correct | 0 ms | 9860 KB | Output is correct |
3 | Correct | 0 ms | 9860 KB | Output is correct |
4 | Correct | 0 ms | 9860 KB | Output is correct |
5 | Incorrect | 0 ms | 9860 KB | Output isn't correct |
6 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 9860 KB | Output is correct |
2 | Correct | 0 ms | 9860 KB | Output is correct |
3 | Correct | 0 ms | 9860 KB | Output is correct |
4 | Correct | 0 ms | 9860 KB | Output is correct |
5 | Incorrect | 0 ms | 9860 KB | Output isn't correct |
6 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 9860 KB | Output is correct |
2 | Correct | 0 ms | 9860 KB | Output is correct |
3 | Correct | 0 ms | 9860 KB | Output is correct |
4 | Correct | 0 ms | 9860 KB | Output is correct |
5 | Incorrect | 0 ms | 9860 KB | Output isn't correct |
6 | Halted | 0 ms | 0 KB | - |