Submission #664102

# Submission time Handle Problem Language Result Execution time Memory
664102 2022-11-27T06:20:51 Z Astrayt Bootfall (IZhO17_bootfall) C++17
13 / 100
1000 ms 6628 KB
//君の手を握ってしまったら
//孤独を知らないこの街には
//もう二度と帰ってくることはできないのでしょう
//君が手を差し伸べた 光で影が生まれる
//歌って聞かせて この話の続き
//連れて行って見たことない星まで
//さユリ - 花の塔
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int ll
#define starburst ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define pii pair<int,int>
#define pb push_back
#define ff first
#define ss second
#define mp make_pair
#define maxn 200005
#define mod 1000000007

void solve(){
    int n, sum = 0; cin >> n;
    vector<int> v(n);
    for(auto &x:v) cin >> x;
    sort(v.begin(), v.end());
    vector<vector<int>> dp(2, vector<int>(250001, 0));
    dp[0][0] = 1;
    for(int i = 0; i < n; ++i){
        sum += v[i];
        dp[1].assign(250001, 0);
        for(int j = 0; j <= 250000; ++j){
            dp[1][j] |= dp[0][j];
            if(j >= v[i]) dp[1][j] |= dp[0][j - v[i]];
        }
        dp[0] = dp[1];
    }
    if(sum % 2 == 1 || dp[1][sum / 2] == 0){
        cout << "0\n";
        return;
    }
    set<int> tans[n], ans;
    for(int k = 0; k < n; ++k){
        dp[0].assign(250001, 0);
        dp[1].assign(250001, 0);
        dp[0][0] = 1;
        for(int i = 0; i < n; ++i){
            if(i == k) continue;
            dp[1].assign(250001, 0);
            for(int j = 0; j <= 250000; ++j){
                dp[1][j] |= dp[0][j];
                if(j >= v[i]) dp[1][j] |= dp[0][j - v[i]];
            }
            dp[0] = dp[1];
        }
        for(int val = sum - v[k]; val >= 0; --val){
            if(dp[1][val]) {
                int t = val - (sum - val - v[k]);
                if(t <= 0) break;
                tans[k].insert(t), ans.insert(t);
            }
        }
    }
    for(int i = 0; i < n; ++i){
        set<int> tmp;
        for(auto x:ans) if(tans[i].find(x) != tans[i].end()) tmp.insert(x);
        ans = tmp;
    }
    cout << ans.size() << '\n';
    for(auto x:ans) cout << x << ' ';
}

signed main(){
    starburst
    int t = 1; //cin >> t;
    while(t--) solve();
}
# Verdict Execution time Memory Grader output
1 Correct 11 ms 6100 KB Output is correct
2 Correct 27 ms 6100 KB Output is correct
3 Correct 5 ms 6100 KB Output is correct
4 Correct 15 ms 6100 KB Output is correct
5 Correct 84 ms 6100 KB Output is correct
6 Correct 46 ms 6100 KB Output is correct
7 Correct 23 ms 6100 KB Output is correct
8 Correct 86 ms 6100 KB Output is correct
9 Correct 55 ms 6100 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 6100 KB Output is correct
2 Correct 27 ms 6100 KB Output is correct
3 Correct 5 ms 6100 KB Output is correct
4 Correct 15 ms 6100 KB Output is correct
5 Correct 84 ms 6100 KB Output is correct
6 Correct 46 ms 6100 KB Output is correct
7 Correct 23 ms 6100 KB Output is correct
8 Correct 86 ms 6100 KB Output is correct
9 Correct 55 ms 6100 KB Output is correct
10 Correct 478 ms 6100 KB Output is correct
11 Correct 484 ms 6100 KB Output is correct
12 Correct 513 ms 6100 KB Output is correct
13 Correct 341 ms 6100 KB Output is correct
14 Correct 421 ms 6100 KB Output is correct
15 Correct 443 ms 6100 KB Output is correct
16 Correct 473 ms 6100 KB Output is correct
17 Correct 196 ms 6100 KB Output is correct
18 Correct 327 ms 6100 KB Output is correct
19 Correct 376 ms 6100 KB Output is correct
20 Correct 482 ms 6100 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 6100 KB Output is correct
2 Correct 27 ms 6100 KB Output is correct
3 Correct 5 ms 6100 KB Output is correct
4 Correct 15 ms 6100 KB Output is correct
5 Correct 84 ms 6100 KB Output is correct
6 Correct 46 ms 6100 KB Output is correct
7 Correct 23 ms 6100 KB Output is correct
8 Correct 86 ms 6100 KB Output is correct
9 Correct 55 ms 6100 KB Output is correct
10 Correct 478 ms 6100 KB Output is correct
11 Correct 484 ms 6100 KB Output is correct
12 Correct 513 ms 6100 KB Output is correct
13 Correct 341 ms 6100 KB Output is correct
14 Correct 421 ms 6100 KB Output is correct
15 Correct 443 ms 6100 KB Output is correct
16 Correct 473 ms 6100 KB Output is correct
17 Correct 196 ms 6100 KB Output is correct
18 Correct 327 ms 6100 KB Output is correct
19 Correct 376 ms 6100 KB Output is correct
20 Correct 482 ms 6100 KB Output is correct
21 Execution timed out 1090 ms 6628 KB Time limit exceeded
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 11 ms 6100 KB Output is correct
2 Correct 27 ms 6100 KB Output is correct
3 Correct 5 ms 6100 KB Output is correct
4 Correct 15 ms 6100 KB Output is correct
5 Correct 84 ms 6100 KB Output is correct
6 Correct 46 ms 6100 KB Output is correct
7 Correct 23 ms 6100 KB Output is correct
8 Correct 86 ms 6100 KB Output is correct
9 Correct 55 ms 6100 KB Output is correct
10 Correct 478 ms 6100 KB Output is correct
11 Correct 484 ms 6100 KB Output is correct
12 Correct 513 ms 6100 KB Output is correct
13 Correct 341 ms 6100 KB Output is correct
14 Correct 421 ms 6100 KB Output is correct
15 Correct 443 ms 6100 KB Output is correct
16 Correct 473 ms 6100 KB Output is correct
17 Correct 196 ms 6100 KB Output is correct
18 Correct 327 ms 6100 KB Output is correct
19 Correct 376 ms 6100 KB Output is correct
20 Correct 482 ms 6100 KB Output is correct
21 Execution timed out 1090 ms 6628 KB Time limit exceeded
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 11 ms 6100 KB Output is correct
2 Correct 27 ms 6100 KB Output is correct
3 Correct 5 ms 6100 KB Output is correct
4 Correct 15 ms 6100 KB Output is correct
5 Correct 84 ms 6100 KB Output is correct
6 Correct 46 ms 6100 KB Output is correct
7 Correct 23 ms 6100 KB Output is correct
8 Correct 86 ms 6100 KB Output is correct
9 Correct 55 ms 6100 KB Output is correct
10 Correct 478 ms 6100 KB Output is correct
11 Correct 484 ms 6100 KB Output is correct
12 Correct 513 ms 6100 KB Output is correct
13 Correct 341 ms 6100 KB Output is correct
14 Correct 421 ms 6100 KB Output is correct
15 Correct 443 ms 6100 KB Output is correct
16 Correct 473 ms 6100 KB Output is correct
17 Correct 196 ms 6100 KB Output is correct
18 Correct 327 ms 6100 KB Output is correct
19 Correct 376 ms 6100 KB Output is correct
20 Correct 482 ms 6100 KB Output is correct
21 Execution timed out 1090 ms 6628 KB Time limit exceeded
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 11 ms 6100 KB Output is correct
2 Correct 27 ms 6100 KB Output is correct
3 Correct 5 ms 6100 KB Output is correct
4 Correct 15 ms 6100 KB Output is correct
5 Correct 84 ms 6100 KB Output is correct
6 Correct 46 ms 6100 KB Output is correct
7 Correct 23 ms 6100 KB Output is correct
8 Correct 86 ms 6100 KB Output is correct
9 Correct 55 ms 6100 KB Output is correct
10 Correct 478 ms 6100 KB Output is correct
11 Correct 484 ms 6100 KB Output is correct
12 Correct 513 ms 6100 KB Output is correct
13 Correct 341 ms 6100 KB Output is correct
14 Correct 421 ms 6100 KB Output is correct
15 Correct 443 ms 6100 KB Output is correct
16 Correct 473 ms 6100 KB Output is correct
17 Correct 196 ms 6100 KB Output is correct
18 Correct 327 ms 6100 KB Output is correct
19 Correct 376 ms 6100 KB Output is correct
20 Correct 482 ms 6100 KB Output is correct
21 Execution timed out 1090 ms 6628 KB Time limit exceeded
22 Halted 0 ms 0 KB -