Submission #39848

#TimeUsernameProblemLanguageResultExecution timeMemory
39848igziBootfall (IZhO17_bootfall)C++14
0 / 100
0 ms3016 KiB
#include <bits/stdc++.h> #define maxN 505 #define maxA 505 using namespace std; int n,i,j,s=0,a[maxN],b[maxN*maxA]; vector <int> v,ans; bool proveri(int x,int p){ if(s+x-3*a[p]<0) return b[(s+x-a[i])/2]; return b[(s+x-a[i])/2]>b[(s+x-3*a[i])/2]; } bool moze(int x){ for(int i=0;i<n;i++){ if((s+x-a[i])%2 || !proveri(x,i)) return false; } return true; } int main() { cin>>n; for(i=0;i<n;i++){ cin>>a[i]; s+=a[i]; } for(i=0;i<=s;i++){ b[i]=0; } b[0]=1; for(i=0;i<n;i++){ for(j=s;j>=0;j--){ if(b[j]!=0) b[a[i]+j]+=b[j]; } } if(s%2 || b[s/2]==0) cout<<0<<endl; else{ for(i=0;i<=s;i++){ if(moze(i)) ans.push_back(i); } cout<<ans.size()<<endl; for(i=0;i<ans.size();i++){ cout<<ans[i]<<" "; } } return 0; }

Compilation message (stderr)

bootfall.cpp: In function 'int main()':
bootfall.cpp:42:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(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...