답안 #25374

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
25374 2017-06-21T18:52:53 Z gabrielsimoes Bali Sculptures (APIO15_sculpture) C++14
0 / 100
3 ms 9856 KB
#include <bits/stdc++.h>
using namespace std;

typedef signed char sc;
typedef long long ll;
#define most(a) (sc(63 - __builtin_clzll(a)))
#define cost(i, j) (most((v[j] - v[i-1])&(~x)))

const int MAXN = 2001;
const sc MAXLOG = 44;

int N, A, B;
ll v[MAXN];

ll x;
bool ok[MAXN][MAXN];
sc dp[MAXN][MAXN];

sc f(int i, int g) {
	if (i == N+1) return g!=0?MAXLOG:-1;
	else if (g == 0) return MAXLOG;

	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,a; i <= N; i++)
		scanf("%d", &a), v[i] = v[i-1] + a;

	ll ans = 0;
	sc lim = most(v[N]) + 1;
	x = (1LL << lim);
	while (lim > 0) {
		memset(ok, 0, sizeof(ok));

		for (int i = A; i <= B; i++)
			lim = min(lim, f(1, i));

		if (lim != -1) {
			x |= (1LL << lim);
			ans |= (1LL << lim);
		}
	}

	printf("%lld\n", ans);
}

Compilation message

sculpture.cpp: In function 'int main()':
sculpture.cpp:35:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d %d", &N, &A, &B);
                               ^
sculpture.cpp:37:37: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a), v[i] = v[i-1] + a;
                                     ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 9856 KB Output is correct
2 Incorrect 0 ms 9856 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 9856 KB Output is correct
2 Incorrect 0 ms 9856 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 9856 KB Output is correct
2 Incorrect 0 ms 9856 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 9856 KB Output is correct
2 Incorrect 0 ms 9856 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 9856 KB Output is correct
2 Incorrect 3 ms 9856 KB Output isn't correct
3 Halted 0 ms 0 KB -