Submission #38790

#TimeUsernameProblemLanguageResultExecution timeMemory
38790DenXman111Bootfall (IZhO17_bootfall)C++14
13 / 100
83 ms6088 KiB
#include <iostream>
#include <queue>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <map>
#include <vector>
#include <cstring>
#include <iomanip>
#include <set>
#include <sstream>
#include <ctime>

#define rust(a, b, c, d) sqrt(sqr(a - c) + sqr(b - d))

#define sqr(a) (a)*(a)
#define m_p make_pair
#define fi first
#define se second
#define fast_io ios_base::sync_with_stdio(0); cin.tie(0)
#define endl '\n'

typedef long long ll;
const int MAXINT=2147483640;
const ll MAXLL=9223372036854775800LL;
const ll MAXN=250000;

using namespace std;

int dp[MAXN + 502], new_dp[MAXN + 502], a[MAXN];
int can[MAXN + 502];
vector <int> ans;

int main()
{
    fast_io;

    int n, sum = 0;

    cin >> n;
    for (int i = 1; i <= n; ++i) {cin >> a[i]; sum += a[i];}
    dp[0] = 1;
    for (int i = 1; i <= n; ++i) {
        for (int j = MAXN; j >= a[i]; --j) dp[j] += dp[j - a[i]];
    }
       if (sum % 2 || !dp[sum / 2]) return cout << 0, 0;
    for (int i = 1; i <= n; ++i) {
        for (int j = 0; j <= MAXN; ++j) new_dp[j] += dp[j], new_dp[j + a[i]] -= new_dp[j];
        int new_sum = sum + a[i];
        for (int j = 0; j <= MAXN; ++j)
            if (sum - a[i] - j >= 0) if ((new_sum + j) % 2 == 0 && new_dp[(sum - a[i] - j) / 2]) ++can[j];
    }
    for (int i = 1; i <= MAXN; ++i) if (can[i] == n) ans.push_back(i);
    cout << ans.size() << endl; for (int i = 0; i < ans.size(); ++i) cout << ans[i] << " ";
    return 0;
}

Compilation message (stderr)

bootfall.cpp: In function 'int main()':
bootfall.cpp:54:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     cout << ans.size() << endl; for (int i = 0; i < ans.size(); ++i) cout << ans[i] << " ";
                                                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...