Submission #1244523

#TimeUsernameProblemLanguageResultExecution timeMemory
1244523warrennBootfall (IZhO17_bootfall)C++20
100 / 100
215 ms4440 KiB
#include<bits/stdc++.h> using namespace std; int dp[250001]; int dp2[250001]; int freq[500002]; int n; int a[502]; void cek(int idx){ int tot=0; for(int q=1;q<=n;q++){ tot+=a[q]; } tot-=a[idx]; for(int q=0;q<=tot+a[idx];q++){ dp2[q]=dp[q]; } for(int q=a[idx];q<=tot+a[idx];q++){ dp[q]-=dp[q-a[idx]]; } for(int q=0;q<=tot/2;q++){ if(dp[q]){ freq[tot-2*q]++; } } for(int q=0;q<=tot+a[idx];q++){ dp[q]=dp2[q]; } } int main(){ cin>>n; int tot=0; for(int q=1;q<=n;q++){ cin>>a[q]; tot+=a[q]; } if(tot%2==1){ cout<<0<<endl; return 0; } dp[0]=1; for(int q=1;q<=n;q++){ for(int w=tot;w>=a[q];w--){ dp[w]+=dp[w-a[q]]; } } if(dp[tot/2]==0){ cout<<0<<endl; return 0; } for(int q=1;q<=n;q++){ cek(q); } int ans=0; vector<int>isi; for(int q=1;q<=500000;q++){ if(freq[q]==n){ ans++; isi.push_back(q); } } cout<<ans<<endl; for(auto r : isi){ cout<<r<<" "; } cout<<endl; }
#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...