답안 #657091

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
657091 2022-11-08T21:05:32 Z Lobo Uplifting Excursion (BOI22_vault) C++17
20 / 100
3224 ms 524288 KB
#include<bits/stdc++.h>
using namespace std;
const long long inf = (long long) 1e18 + 10;
const int inf1 = (int) 1e9 + 10;
#define int long long
#define dbl long double
#define endl '\n'
#define sc second
#define fr first
#define mp make_pair
#define pb push_back
#define all(x) x.begin(), x.end()

const int maxm = 51;

int n, m, L;

void solve() {
    cin >> m >> L;
    vector<pair<int,int>> vals;
    int sumneg = 0, sumpos = 0;
    for(int i = -m; i <= m; i++) {
        int x; cin >> x;
        if(i > 0) sumpos+= x*i;
        if(i < 0) sumneg-= x*i;

        for(int j = 0; j <= 10; j++) {
            if((1<<j) <= x) {
                x-= (1<<j);
                vals.pb(mp(i*(1<<j),(1<<j)));
            }
        }
        for(int j = 0; j <= 10; j++) {
            if((1<<j)&x) {
                vals.pb(mp(i*(1<<j),(1<<j)));
            }
        }
        // while(x--) vals.pb(mp(i,1));
    }

    if(L > sumpos || L < -sumneg) {
        cout << "impossible" << endl;
        return;
    }

    int n = vals.size();
    int up = sumneg;

    vector<int> dp[2];
    for(int i = -sumneg; i <= sumpos; i++) {
        dp[0].pb(-inf);
        dp[1].pb(-inf);
    }
    dp[0][0+up] = 0;
    for(int i = 1; i <= n; i++) {
        int x = vals[i-1].fr;
        int q = vals[i-1].sc;
        for(int j = -sumneg; j <= sumpos; j++) {
            dp[i&1][j+up] = -inf;
            dp[i&1][j+up] = max(dp[i&1][j+up],dp[i&1^1][j+up]);
            if(j-x >= -sumneg && j-x <= sumpos) dp[i&1][j+up] = max(dp[i&1][j+up],dp[i&1^1][j-x+up]+q);
        }
    }

    if(dp[n&1][L+up] < 0) {
        cout << "impossible" << endl;
    }
    else {
        cout << dp[n&1][L+up] << endl;
    }


}

int32_t main() {
    ios::sync_with_stdio(false); cin.tie(0);

    // freopen("in.in", "r", stdin);
    // freopen("out.out", "w", stdout);
    int tt = 1;
    // cin >> tt;
    while(tt--) {
        solve();
    }

}

Compilation message

vault.cpp: In function 'void solve()':
vault.cpp:60:51: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
   60 |             dp[i&1][j+up] = max(dp[i&1][j+up],dp[i&1^1][j+up]);
      |                                                  ~^~
vault.cpp:61:87: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
   61 |             if(j-x >= -sumneg && j-x <= sumpos) dp[i&1][j+up] = max(dp[i&1][j+up],dp[i&1^1][j-x+up]+q);
      |                                                                                      ~^~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 77 ms 1992 KB Output is correct
7 Correct 15 ms 976 KB Output is correct
8 Correct 84 ms 1528 KB Output is correct
9 Correct 173 ms 2368 KB Output is correct
10 Correct 1 ms 468 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 77 ms 1992 KB Output is correct
7 Correct 15 ms 976 KB Output is correct
8 Correct 84 ms 1528 KB Output is correct
9 Correct 173 ms 2368 KB Output is correct
10 Correct 1 ms 468 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 320 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 316 KB Output is correct
16 Correct 1 ms 316 KB Output is correct
17 Correct 82 ms 2104 KB Output is correct
18 Correct 15 ms 976 KB Output is correct
19 Correct 78 ms 1532 KB Output is correct
20 Correct 172 ms 2368 KB Output is correct
21 Correct 1 ms 468 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1435 ms 8380 KB Output is correct
25 Correct 210 ms 3784 KB Output is correct
26 Correct 3224 ms 15896 KB Output is correct
27 Correct 3098 ms 15860 KB Output is correct
28 Correct 2 ms 848 KB Output is correct
29 Correct 2 ms 828 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Runtime error 539 ms 524288 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Runtime error 539 ms 524288 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Runtime error 539 ms 524288 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 77 ms 1992 KB Output is correct
7 Correct 15 ms 976 KB Output is correct
8 Correct 84 ms 1528 KB Output is correct
9 Correct 173 ms 2368 KB Output is correct
10 Correct 1 ms 468 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Runtime error 539 ms 524288 KB Execution killed with signal 9
14 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Runtime error 539 ms 524288 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 77 ms 1992 KB Output is correct
7 Correct 15 ms 976 KB Output is correct
8 Correct 84 ms 1528 KB Output is correct
9 Correct 173 ms 2368 KB Output is correct
10 Correct 1 ms 468 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 320 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 316 KB Output is correct
16 Correct 1 ms 316 KB Output is correct
17 Correct 82 ms 2104 KB Output is correct
18 Correct 15 ms 976 KB Output is correct
19 Correct 78 ms 1532 KB Output is correct
20 Correct 172 ms 2368 KB Output is correct
21 Correct 1 ms 468 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1435 ms 8380 KB Output is correct
25 Correct 210 ms 3784 KB Output is correct
26 Correct 3224 ms 15896 KB Output is correct
27 Correct 3098 ms 15860 KB Output is correct
28 Correct 2 ms 848 KB Output is correct
29 Correct 2 ms 828 KB Output is correct
30 Correct 0 ms 212 KB Output is correct
31 Runtime error 539 ms 524288 KB Execution killed with signal 9
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Runtime error 539 ms 524288 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 77 ms 1992 KB Output is correct
7 Correct 15 ms 976 KB Output is correct
8 Correct 84 ms 1528 KB Output is correct
9 Correct 173 ms 2368 KB Output is correct
10 Correct 1 ms 468 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 320 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 316 KB Output is correct
16 Correct 1 ms 316 KB Output is correct
17 Correct 82 ms 2104 KB Output is correct
18 Correct 15 ms 976 KB Output is correct
19 Correct 78 ms 1532 KB Output is correct
20 Correct 172 ms 2368 KB Output is correct
21 Correct 1 ms 468 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1435 ms 8380 KB Output is correct
25 Correct 210 ms 3784 KB Output is correct
26 Correct 3224 ms 15896 KB Output is correct
27 Correct 3098 ms 15860 KB Output is correct
28 Correct 2 ms 848 KB Output is correct
29 Correct 2 ms 828 KB Output is correct
30 Correct 0 ms 212 KB Output is correct
31 Runtime error 539 ms 524288 KB Execution killed with signal 9
32 Halted 0 ms 0 KB -