Submission #878203

#TimeUsernameProblemLanguageResultExecution timeMemory
878203alexddBootfall (IZhO17_bootfall)C++17
28 / 100
1032 ms19288 KiB
#include<bits/stdc++.h> using namespace std; int n,tot; int a[505]; bitset<500005> dp[505]; int variante[500005],cntv; int newv[500005],cntnew; signed main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; tot+=a[i]; } for(int i=1;i<=tot;i++) variante[++cntv]=i; dp[0][250000]=1; for(int i=0;i<=n;i++) { for(int j=1;j<=n;j++) { if(i==j) dp[j] = dp[j-1]; else dp[j] = ((dp[j-1]<<a[j])|(dp[j-1]>>a[j])); } if(i==0) { if(dp[n][250000]==0) { cntv=0; break; } continue; } cntnew=0; for(int j=1;j<=cntv;j++) { int x = variante[j]; if(dp[n][x+250000] || dp[n][-x+250000]) newv[++cntnew] = x; ///difs = -x ///difs = x } cntv=cntnew; for(int j=1;j<=cntnew;j++) variante[j] = newv[j]; } cout<<cntv<<"\n"; for(int i=1;i<=cntv;i++) cout<<variante[i]<<" "; return 0; } /** 3 2 2 2 */
#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...