답안 #721663

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
721663 2023-04-11T06:22:41 Z The_Samurai Uplifting Excursion (BOI22_vault) C++17
5 / 100
5000 ms 4320 KB
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2")
#include "bits/stdc++.h"

using namespace std;
using ll = long long;
int INF = 1e9;

void solve() {
    int n, zero = 0;
    ll l;
    cin >> n >> l;
    vector<ll> a(n + 1), b(n + 1);
    for (int i = 0; i < n; i++)
        cin >> b[n - i];
    cin >> zero;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    if (l < 0) {
        swap(a, b);
        l = -l;
    }
    if (*max_element(a.begin(), a.end()) <= 100) {
        int N = 5e5 + 1e4, ans = 0;
        vector<int> dp_plus(N, -INF), dp_minus(N, -INF);
        dp_plus[0] = dp_minus[0] = 0;
        if (l > N) {
            cout << "impossible";
            return;
        }
        for (int i = 1; i <= n; i++) {
            for (int j = N - 1; j >= i; j--) {
                for (int k = 1; k <= a[i] and i * k <= j; k++) {
                    if (dp_plus[j - i * k] >= 0) {
                        dp_plus[j] = max(dp_plus[j], dp_plus[j - i * k] + k);
                        break;
                    }
                }
            }
            for (int j = N - 1; j >= i; j--) {
                for (int k = 1; k <= b[i] and i * k <= j; k++) {
                    if (dp_minus[j - i * k] >= 0) {
                        dp_minus[j] = max(dp_minus[j], dp_minus[j - i * k] + k);
                        break;
                    }
                }
            }
//            for (int j = 0; j < 100; j++) cout << dp_plus[j] << ' ';
//            cout << '\n';
        }
        for (int i = l; i < N; i++) {
            ans = max(ans, dp_plus[i] + dp_minus[i - l]);
        }
        if (ans == 0) cout << "impossible";
        else cout << ans + zero;
    }
}

int main() {
    ios_base::sync_with_stdio(false); cout.tie(nullptr); cin.tie(nullptr);

    int queries = 1;
#ifdef test_cases
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
//    cin >> queries;
#else
//    cin >> queries;
#endif

    for (int test_case = 1; test_case <= queries; test_case++) {
        solve();
//        cout << '\n';
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 4308 KB Output is correct
2 Correct 9 ms 4308 KB Output is correct
3 Correct 6 ms 4308 KB Output is correct
4 Correct 35 ms 4320 KB Output is correct
5 Correct 2 ms 4308 KB Output is correct
6 Correct 1255 ms 4308 KB Output is correct
7 Correct 513 ms 4308 KB Output is correct
8 Correct 1300 ms 4316 KB Output is correct
9 Correct 2307 ms 4312 KB Output is correct
10 Correct 92 ms 4316 KB Output is correct
11 Correct 79 ms 4308 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 4308 KB Output is correct
2 Correct 9 ms 4308 KB Output is correct
3 Correct 6 ms 4308 KB Output is correct
4 Correct 35 ms 4320 KB Output is correct
5 Correct 2 ms 4308 KB Output is correct
6 Correct 1255 ms 4308 KB Output is correct
7 Correct 513 ms 4308 KB Output is correct
8 Correct 1300 ms 4316 KB Output is correct
9 Correct 2307 ms 4312 KB Output is correct
10 Correct 92 ms 4316 KB Output is correct
11 Correct 79 ms 4308 KB Output is correct
12 Correct 9 ms 4308 KB Output is correct
13 Correct 10 ms 4284 KB Output is correct
14 Correct 6 ms 4308 KB Output is correct
15 Correct 40 ms 4312 KB Output is correct
16 Correct 2 ms 4308 KB Output is correct
17 Correct 1322 ms 4320 KB Output is correct
18 Correct 519 ms 4308 KB Output is correct
19 Correct 1157 ms 4308 KB Output is correct
20 Correct 2353 ms 4312 KB Output is correct
21 Correct 90 ms 4308 KB Output is correct
22 Correct 97 ms 4308 KB Output is correct
23 Correct 2 ms 4308 KB Output is correct
24 Correct 3981 ms 4308 KB Output is correct
25 Correct 1694 ms 4308 KB Output is correct
26 Execution timed out 5027 ms 4308 KB Time limit exceeded
27 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 4312 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 4312 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 4312 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 4308 KB Output is correct
2 Correct 9 ms 4308 KB Output is correct
3 Correct 6 ms 4308 KB Output is correct
4 Correct 35 ms 4320 KB Output is correct
5 Correct 2 ms 4308 KB Output is correct
6 Correct 1255 ms 4308 KB Output is correct
7 Correct 513 ms 4308 KB Output is correct
8 Correct 1300 ms 4316 KB Output is correct
9 Correct 2307 ms 4312 KB Output is correct
10 Correct 92 ms 4316 KB Output is correct
11 Correct 79 ms 4308 KB Output is correct
12 Correct 40 ms 4312 KB Output is correct
13 Incorrect 1 ms 212 KB Output isn't correct
14 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 4312 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 4308 KB Output is correct
2 Correct 9 ms 4308 KB Output is correct
3 Correct 6 ms 4308 KB Output is correct
4 Correct 35 ms 4320 KB Output is correct
5 Correct 2 ms 4308 KB Output is correct
6 Correct 1255 ms 4308 KB Output is correct
7 Correct 513 ms 4308 KB Output is correct
8 Correct 1300 ms 4316 KB Output is correct
9 Correct 2307 ms 4312 KB Output is correct
10 Correct 92 ms 4316 KB Output is correct
11 Correct 79 ms 4308 KB Output is correct
12 Correct 9 ms 4308 KB Output is correct
13 Correct 10 ms 4284 KB Output is correct
14 Correct 6 ms 4308 KB Output is correct
15 Correct 40 ms 4312 KB Output is correct
16 Correct 2 ms 4308 KB Output is correct
17 Correct 1322 ms 4320 KB Output is correct
18 Correct 519 ms 4308 KB Output is correct
19 Correct 1157 ms 4308 KB Output is correct
20 Correct 2353 ms 4312 KB Output is correct
21 Correct 90 ms 4308 KB Output is correct
22 Correct 97 ms 4308 KB Output is correct
23 Correct 2 ms 4308 KB Output is correct
24 Correct 3981 ms 4308 KB Output is correct
25 Correct 1694 ms 4308 KB Output is correct
26 Execution timed out 5027 ms 4308 KB Time limit exceeded
27 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 4312 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 4308 KB Output is correct
2 Correct 9 ms 4308 KB Output is correct
3 Correct 6 ms 4308 KB Output is correct
4 Correct 35 ms 4320 KB Output is correct
5 Correct 2 ms 4308 KB Output is correct
6 Correct 1255 ms 4308 KB Output is correct
7 Correct 513 ms 4308 KB Output is correct
8 Correct 1300 ms 4316 KB Output is correct
9 Correct 2307 ms 4312 KB Output is correct
10 Correct 92 ms 4316 KB Output is correct
11 Correct 79 ms 4308 KB Output is correct
12 Correct 9 ms 4308 KB Output is correct
13 Correct 10 ms 4284 KB Output is correct
14 Correct 6 ms 4308 KB Output is correct
15 Correct 40 ms 4312 KB Output is correct
16 Correct 2 ms 4308 KB Output is correct
17 Correct 1322 ms 4320 KB Output is correct
18 Correct 519 ms 4308 KB Output is correct
19 Correct 1157 ms 4308 KB Output is correct
20 Correct 2353 ms 4312 KB Output is correct
21 Correct 90 ms 4308 KB Output is correct
22 Correct 97 ms 4308 KB Output is correct
23 Correct 2 ms 4308 KB Output is correct
24 Correct 3981 ms 4308 KB Output is correct
25 Correct 1694 ms 4308 KB Output is correct
26 Execution timed out 5027 ms 4308 KB Time limit exceeded
27 Halted 0 ms 0 KB -