Submission #319181

#TimeUsernameProblemLanguageResultExecution timeMemory
319181kshitij_sodaniBootfall (IZhO17_bootfall)C++14
100 / 100
251 ms4960 KiB
#include <bits/stdc++.h> using namespace std; typedef long long llo; #define mp make_pair #define pb push_back #define a first #define b second //#define endl '\n' llo n; llo it[501]; llo vis[501*501]; bitset<501*501> ss; llo su=0; void solve(llo l,llo r){ if(l==r){ for(llo i=1;i<=500*500;i++){ llo x=(i+su-it[l]); if(x%2==0){ if(ss[x/2]){ } else{ vis[i]=1; } } else{ vis[i]=1; } } } else{ bitset<501*501> tt=ss; llo mid=(l+r)/2; for(llo i=mid+1;i<=r;i++){ ss|=(ss<<it[i]); } solve(l,mid); ss=tt; for(llo i=l;i<=mid;i++){ ss|=(ss<<it[i]); } solve(mid+1,r); ss=tt; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n; bitset<501*501> kk; kk[0]=1; for(llo i=0;i<n;i++){ cin>>it[i]; su+=it[i]; kk|=(kk<<it[i]); } ss[0]=1; solve(0,n-1); vector<llo> cur; for(llo i=1;i<=500*500;i++){ if(vis[i]==0){ cur.pb(i); } } if(su%2==1){ cur.clear(); } else{ if(kk[su/2]==0){ cur.clear(); } } cout<<cur.size()<<endl; for(auto j:cur){ cout<<j<<" "; } cout<<endl; 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...