#include<bits/stdc++.h>
using namespace std;
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")
#define all(x) x.begin(), x.end()
#define ins insert
#define pb push_back
#define F first
#define S second
const int N = 250, M = 500;
bitset<250100>dp[501];
int a[501], cnt[250100], sum;
void solve(){
int n;
cin>>n;
dp[0][0] = 1;
for(int i = 1; i <= n; i++){
cin>>a[i];
dp[0] |= (dp[0]<<a[i]);
sum += a[i];
}
if(sum % 2 == 1 || dp[0][sum / 2] == 0){
//cout<<sum<<' '<<dp[0][sum / 2]<<'\n';
cout<<"0";
return;
}
for(int i = 1; i <= n; i++){
dp[i][0] = 1;
for(int j = 1; j <= n; j++){
if(i == j) continue;
dp[i] |= (dp[i]<<a[j]);
}
for(int j = 0; j <= sum - a[i]; j++){
if(!dp[i][j]) continue;
int x = j, y = sum - a[i] - j;
cnt[abs(x - y)]++;
}
}
vector<int>ans;
for(int i = 0; i <= 250000; i++){
if(cnt[i] == n * 2) ans.pb(i);
}
cout<<ans.size()<<'\n';
for(auto it : ans) cout<<it<<' ';
}
main(){
ios_base :: sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
//cin>>t;
for(int i = 1; i <= t; i++){
//cout<<"Case "<<i<<": ";
solve();
}
}
컴파일 시 표준 에러 (stderr) 메시지
bootfall.cpp:46:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
46 | main(){
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |