제출 #867683

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