제출 #867685

#제출 시각아이디문제언어결과실행 시간메모리
867685TAhmed33Uplifting Excursion (BOI22_vault)C++98
0 / 100
5085 ms524288 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll bad = -1e17;
map <ll, ll> dp[202];
ll n, arr[202], l;
ll ans (ll pos, ll cur) {
	if (pos == -n - 1) return (cur == l ? 0ll : bad);
	if (dp[pos + n].count(cur)) return dp[pos + n][cur];
	if (pos == -n - 1) {
		return dp[pos + n][cur] = (cur == l ? 0ll : bad);
	}
	ll ret = ans(pos - 1, cur);
	for (int i = 1; i <= arr[pos + n]; i++) {
		ret = max(ret, i + ans(pos - 1, cur + pos * i));
	}
	return dp[pos + n][cur] = ret;
}
int main () {
	cin >> n >> l;
	for (int i = -n; i <= n; i++) cin >> arr[i + n];
	ll z = ans(n, 0);
	if (z < 0) {
		cout << "impossible\n";
	} else {
		cout << z << '\n';
	}
}
#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...
#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...