제출 #333662

#제출 시각아이디문제언어결과실행 시간메모리
333662tengiz05Bootfall (IZhO17_bootfall)C++17
100 / 100
396 ms5864 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define FASTIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); #define all(x) (x).begin(), (x).end() #define pb push_back #define pii pair<int, int> #define ff first #define ss second #define PI acos(-1) #define ld long double const int mod = 1e9+7, N = 505; int msb(int val){return sizeof(int)*8-__builtin_clzll(val);} int a[N], n, m, k; int dp[N*N], can[N*N]; int sum; void add(int v){ for(int i=sum;i>=0;i--)dp[i+v] += dp[i]; sum += v; } void del(int v){ sum -= v; for(int i=0;i<=sum;i++)dp[i+v] -= dp[i]; } void solve(int test_case){ int i, j; dp[0] = 1; cin >> n; for(i=0;i<n;i++){ cin >> a[i]; add(a[i]); } if(sum%2!=0 || !dp[sum/2]){ cout << 0 << '\n'; return; } for(i=0;i<n;i++){ del(a[i]); for(j=1;j<=250000;j++){ if((sum+j)%2 || !dp[(sum+j)/2])can[j] = 1; }add(a[i]); } vector<int> ans; for(i=1;i<=250000;i++)if(!can[i])ans.pb(i); cout << ans.size() << '\n'; for(auto x : ans)cout <<x<< ' '; cout << '\n'; return; } signed main(){ FASTIO; #define MULTITEST 0 #if MULTITEST int ___T; cin >> ___T; for(int T_CASE = 1; T_CASE <= ___T; T_CASE++) solve(T_CASE); #else solve(1); #endif return 0; }
#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...