제출 #831700

#제출 시각아이디문제언어결과실행 시간메모리
831700Chal1shkanBootfall (IZhO17_bootfall)C++17
100 / 100
291 ms1944 KiB
//Bismillahir-Rahmanir-Rahim

# include <bits/stdc++.h>

# define pb push_back
# define ff first
# define ss second
# define nl "\n"
# define sz(x) ((int)(x).size())
# define all(x) (x).begin(), (x).end()
# define deb(x) cerr << #x  << " = " << x << endl; 
# define pll pair <ll, ll>
# define pii pair <int, int>
 
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
 
const ll maxn = 5e2 + 3;
const ll inf = 2e18 + 0;
const ll mod = 1e9 + 7;
const ll dx[] = {-1, 1, 0, 0};
const ll dy[] = {0, 0, -1, 1};

using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

int n, a[maxn], sum;
int dp[maxn * maxn];
bitset <maxn * maxn> ok;

void add (int x)  {
	sum += x;
	for (int i = sum - x; i >= 0; --i) {
		dp[i + x] += dp[i];
	}
}

void del (int x) {
	for (int i = x; i <= sum; ++i) {
		dp[i] -= dp[i - x];
	}
	sum -= x;
}

void ma1n (/* SABR */) {
    cin >> n;
    dp[0] = 1;
    for (int i = 1; i <= n; ++i) {
    	cin >> a[i];
    	add(a[i]);
	}
	if (sum & 1 || !dp[sum / 2]) {
		cout << 0 << nl;
	}
	else {
		for (int x = 1; x <= 250000; ++x) {
			ok[x] = 1;
		}
		for (int i = 1; i <= n; ++i) {
			del(a[i]);
			for (int x = 1; x <= 250000; ++x){
				if ((sum + x) & 1 || !dp[(sum + x) / 2]) {
					ok[x] = 0;
				}
			}
			add(a[i]);
		}
		cout << ok.count() << nl;
		for (ll x = ok._Find_first(); x <= 250000; x = ok._Find_next(x)) {
			cout << x << ' ';
		}
		cout << nl;
	}
}
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
//  freopen("file.in", "r", stdin);
//  freopen("file.out", "w", stdout);
    int ttt = 1;
//  cin >> ttt;
    for (int test = 1; test <= ttt; ++test) {
//      cout << "Case " << test << ":" << '\n';
        ma1n();
    }
    return 0;
}

// 998batrr | BbIWEJI 3A TObOU!!!
// tourist  | BbIWEJI 3A TObOU!!!
#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...