Submission #671827

#TimeUsernameProblemLanguageResultExecution timeMemory
671827Alihan_8Bootfall (IZhO17_bootfall)C++17
28 / 100
63 ms992 KiB
#include <bits/stdc++.h> // include <ext/pb_ds/assoc_container.hpp> // include <ext/pb_ds/tree_policy.hpp> // using namespace __gnu_pbds; using namespace std; #define all(x) x.begin(), x.end() #define pb push_back // define ordered_set tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update> #define mpr make_pair #define ln '\n' void IO(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);} #define int long long signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector <int> p(n); for ( auto &i: p ) cin >> i; int sum = accumulate(all(p), 0ll); vector <int> dp(sum+1); dp[0] = 1; for ( auto val: p ){ for ( int j = sum; j >= val; j-- ) dp[j] += dp[j-val]; } if ( sum & 1 or !dp[sum >> 1] ){ cout << "0\n"; return 0; } const int N = 25001; vector <int> cnt(N), ans; for ( auto val: p ){ for ( int j = val; j <= sum; j++ ) dp[j] -= dp[j-val]; for ( int i = 1; i <= sum-val; i++ ){ int cur = sum-val+i; if ( cur & 1 or !dp[cur/2-i] ) continue; if ( ++cnt[i] == n ) ans.pb(i); } for ( int j = sum; j >= val; j-- ) dp[j] += dp[j-val]; } sort(all(ans)); cout << (int)ans.size() << ln; for ( auto i: ans ) cout << i << ' '; cout << '\n'; }

Compilation message (stderr)

bootfall.cpp: In function 'void IO(std::string)':
bootfall.cpp:11:29: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 | void IO(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
      |                      ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bootfall.cpp:11:70: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 | void IO(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
      |                                                               ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...