Submission #894573

#TimeUsernameProblemLanguageResultExecution timeMemory
894573AndreyBootfall (IZhO17_bootfall)C++14
65 / 100
1022 ms17840 KiB
#include <bits/stdc++.h>
using namespace std;

bitset<501> idk[260001];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n,sb = 0;
    cin >> n;
    vector<int> haha(n);
    for(int i = 0; i < n; i++) {
        cin >> haha[i];
        sb+=haha[i];
    }
    for(int i = 0; i < 501; i++) {
        idk[0][i] = 1;
    }
    for(int i = 0; i < n; i++) {
        for(int j = 260000; j >= haha[i]; j--) {
            bool a = idk[j][i];
            idk[j]|=idk[j-haha[i]];
            idk[j][i] = a;
        }
    }
    vector<int> ans(0);
    for(int i = 1; i <= 250000; i++) {
        bool yeah = true;
        if(sb%2 == 0) {
            if(idk[sb/2][n] == 0) {
                yeah = false;
            }
            for(int j = 0; j < n; j++) {
                if((sb+i-haha[j])%2 == 1) {
                    yeah = false;
                }
                if((sb+i-haha[j])/2 > 250000 || idk[(sb+i-haha[j])/2][j] == 0) {
                    yeah = false;
                }
            }
            if(yeah) {
                ans.push_back(i);
            }
        }
    }
    cout << ans.size() << "\n";
    for(int i = 0; i < ans.size(); i++) {
        cout << ans[i] << " ";
    }
    return 0;
}

Compilation message (stderr)

bootfall.cpp: In function 'int main()':
bootfall.cpp:49:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |     for(int i = 0; i < ans.size(); 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...