답안 #566223

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
566223 2022-05-22T07:09:15 Z 1zaid1 Bootfall (IZhO17_bootfall) C++17
0 / 100
2 ms 212 KB
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long ll;
#define int long long

#pragma GCC diagnostic ignored "-Wunused-result"
void setIO(string name = "") {
    ios_base::sync_with_stdio(0); cin.tie(0);
    cout << fixed << setprecision(15);
    if (name.size()) {
    	freopen((name+".in").c_str(), "r", stdin);
        freopen((name+".out").c_str(), "w", stdout);
    }
}

const int M = 5e2+5, MOD = 1e6+7;
bool can[M][M];
int a[M];


signed main() {
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    srand(time(0));
    // setIO("citystate");

    int n;
    cin >> n;
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        sum += a[i];
    }

    n++;
    vector<int> ans;
    for (int k = 1; k <= sum; k++) {
        a[n] = k;
        sum += a[n];

        int ok = 1;
        for (int r = 1; r <= n; r++) {
            if ((sum-a[r])%2) {
                ok = false;
                break;
            }

            int tmp = 0;
            sum -= a[r];
            swap(a[r], tmp);
            for (int i = 0; i <= n; i++) can[i][0] = 1;
            for (int x = 0; x <= sum/2; x++) {
                for (int i = 1; i <= n; i++) {
                    can[i][x] = can[i-1][x];
                    if (x >= a[i]) can[i][x] |= can[i-1][x-a[i]];
                }
            }

            swap(a[r], tmp);
            sum += a[r];
            if (!can[n][(sum-a[r])/2]) {
                ok = false;
                break;
            }

            for (int x = 0; x <= sum/2; x++) for (int i = 0; i <= n; i++) can[i][x] = 0;
        }

        if (ok) ans.push_back(k);
        sum -= a[n];
    }

    cout << ans.size() << endl;
    for (int i:ans) cout << i << ' '; cout << endl;

    return 0;
}

Compilation message

bootfall.cpp: In function 'int main()':
bootfall.cpp:74:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   74 |     for (int i:ans) cout << i << ' '; cout << endl;
      |     ^~~
bootfall.cpp:74:39: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   74 |     for (int i:ans) cout << i << ' '; cout << endl;
      |                                       ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Incorrect 2 ms 212 KB Output isn't correct
5 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 1 ms 212 KB Output is correct
4 Incorrect 2 ms 212 KB Output isn't correct
5 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 1 ms 212 KB Output is correct
4 Incorrect 2 ms 212 KB Output isn't correct
5 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 1 ms 212 KB Output is correct
4 Incorrect 2 ms 212 KB Output isn't correct
5 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 1 ms 212 KB Output is correct
4 Incorrect 2 ms 212 KB Output isn't correct
5 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 1 ms 212 KB Output is correct
4 Incorrect 2 ms 212 KB Output isn't correct
5 Halted 0 ms 0 KB -