이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int OFFSET = 1e4, INF = 1e9;
int n, tar;
unordered_map<int, int> t;
array<int, 2 * OFFSET + 5> dp;
void comp() {
fill(dp.begin(), dp.end(), -INF);
dp[OFFSET] = 0;
for (int x = -n; x <= n; x++) {
for (int i = 1; i <= t[x]; i++) {
array<int, 2 * OFFSET + 5> old_dp = dp;
for (int y = OFFSET; y >= -OFFSET; y--)
if (-OFFSET <= y - x && y - x <= OFFSET) dp[y + OFFSET] = max(old_dp[y + OFFSET], old_dp[y - x + OFFSET] + 1);
}
}
}
signed main() {
// freopen("vault.in", "r", stdin);
cin >> n >> tar;
if (tar < -OFFSET || tar > OFFSET) { cout << "impossible" << '\n'; exit(0); }
for (int i = -n; i <= n; i++) cin >> t[i];
comp();
cout << ((dp[tar + OFFSET] < 0) ? "impossible" : to_string(dp[tar + OFFSET])) << '\n';
}
# | 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... |
# | 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... |