제출 #1134007

#제출 시각아이디문제언어결과실행 시간메모리
1134007AgageldiBootfall (IZhO17_bootfall)C++17
0 / 100
40 ms320 KiB
/*
ID: agageld1
LANG: C++17
TASK:
siuu
*/
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define N 200005
#define pb push_back
#define ff first
#define ss second
#define sz(s) (int)s.size()

//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

ll n, sum, t;
vector <int> answer, v;
map <int,int> pos;

int main (){
	ios::sync_with_stdio(0);cin.tie(0);
	cin >> n;
	for(int i = 1; i <= n;i++) {
		int x;
		cin >> x;
		sum += x;
		v.pb(x);
	}
	for(int i = 1; i <= 1000; i++) {
		sum += i;
		v.pb(i);
		bool tr = 0;
		for(auto j : v) {
			if((sum - j) % 2) tr = 1;
		}
		if(tr) {
			v.pop_back();
			sum -= i;
			continue;
		}
		for(int j = 0; j < sz(v); j++) {
			pos.clear();
			pos[0] = 1;
			sum -= v[j];
			for(int k = 0; k < sz(v); k++) {
				if(k == j) continue;
				if(v[k] > sum/2) tr=1;
				break;
			}
			if(tr) break;
			for(int k = 0; k < sz(v); k++) {
				if(k == j) continue;
				for(int l = sum / 2; l >= 0; l--) {
					if(pos[l]) pos[l + v[k]] = 1;
				}
			}
			sum += v[j];
			if(pos.find((sum - v[j]) / 2) == pos.end()) {
				tr = 1;
				break;
			}
		}
		if(!tr) answer.pb(i);
		v.pop_back();
		sum -= i;
	}
	cout << sz(answer) << '\n';
	for(auto i:answer) {
		cout << 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...