Submission #1025000

#TimeUsernameProblemLanguageResultExecution timeMemory
1025000hasan2006Bootfall (IZhO17_bootfall)C++17
100 / 100
301 ms6088 KiB
#include <bits/stdc++.h>

using namespace std;

#define TL ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define rall(s) s.rbegin(),s.rend()
#define all(s) s.begin(),s.end()
#define pb push_back
#define se second
#define fi first
#define ll long long
#define ld long double
#define YES cout<<"YES\n"
#define Yes cout<<"Yes\n"
#define yes cout<<"yes\n"
#define NO cout<<"NO\n"
#define No cout<<"No\n"
#define no cout<<"no\n"


const int N = 5e3 + 9 , mod = 1e9 + 7;
int a[N] , b[N * N] , c[N * N] ;


void solve()
{
    int n , i , ans = 0 ,  j , s = 0 , f , k , m ;
    cin>>n;
	b[0] = 1 , c[0] = n + 1;
	for(i = 1; i <= n; i ++){
		cin>>a[i];
		for(j = s; j >= 0; j--)
		    b[j + a[i]] += b[j];
		s += a[i];
	}
	for(i = 1; i <= n; i++){
		s -= a[i];
		for(int j = 0; j <= s; j++){
		    b[j + a[i]] -= b[j];
		    c[max(j + j - s, 0)] += (b[j] != 0);
		    ans += (c[max(j + j - s, 0)] == n);
		}
		for(int j = s; j >= 0; j --)
		    b[j + a[i]] += b[j];
		s += a[i];
	}
	if(s % 2 == 1 || !b[s / 2]){
	    cout<<0;
        return;
	}
	cout<<ans<<"\n";
	for(i = 1; i <= s; i++)
	    if(c[i] == n)
        	cout<<i<<" ";
}

int main(){
    TL;
    /*#ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif*/
    int t = 1;
//    cin>>t;
    while(t--)
     {
        solve();
     }
}
// Author : حسن

Compilation message (stderr)

bootfall.cpp: In function 'void solve()':
bootfall.cpp:27:40: warning: unused variable 'f' [-Wunused-variable]
   27 |     int n , i , ans = 0 ,  j , s = 0 , f , k , m ;
      |                                        ^
bootfall.cpp:27:44: warning: unused variable 'k' [-Wunused-variable]
   27 |     int n , i , ans = 0 ,  j , s = 0 , f , k , m ;
      |                                            ^
bootfall.cpp:27:48: warning: unused variable 'm' [-Wunused-variable]
   27 |     int n , i , ans = 0 ,  j , s = 0 , f , k , m ;
      |                                                ^
#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...