Submission #513709

# Submission time Handle Problem Language Result Execution time Memory
513709 2022-01-17T12:40:19 Z Mazaalai Bootfall (IZhO17_bootfall) C++17
13 / 100
1000 ms 368 KB
#include <bits/stdc++.h>
#define pb push_back
#define ALL(x) x.begin(),x.end()
using namespace std;
int n;
vector <int> nums, ans;
void print(vector<int>x) {
	for (auto el : x) cout << el << ' ';cout << '\n';
}
bool solve(vector <int> vals) {
	int sum = 0;
	for (int i = 0; i < n; i++) sum += vals[i];
	if (sum & 1) return 0;
	int tar = sum / 2;
	vector <vector <bool> > dp(n, vector <bool>(tar, 0));
	dp[0][vals[0]] = dp[0][0] = 1;
	// print(vals);
	for (int i = 1; i < n; i++) 
	for (int j = tar-1; j >= 0; j--) {
		if (!dp[i-1][j]) continue;
		dp[i][j] = 1;
		if (j + vals[i] > tar) continue;
		if (j + vals[i] == tar) {
			// cout <<"done\n";
			return 1;
		}
		dp[i][j+vals[i]] = 1;
	}
	return 0;
}
bool possible() {
	bool res = 1;
	// cout << nums.back() << '\n';
	for (int i = 0; i <= n && res; i++) { // n^3
		vector <int> cur;
		for (int j = 0; j <= n; j++) { 
			if (j == i) continue;
			cur.pb(nums[j]);
		}
		res &= solve(cur); //n^2
	}
	// cout << "HERE: " << res << '\n';
	return res;
}
signed main() {

	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	// freopen("in.txt", "r", stdin);
	// freopen("out.txt", "w", stdout);
	cin >> n;
	for (int i = 0; i < n; i++) {
		int x; cin >> x;
		nums.pb(x);
	}
	int mx = 0;
	sort(ALL(nums));
	for (int i = 0; i < n-1; i++) mx += nums[i];

	for (int i = 1; i <= mx; i++) { // n^4
		nums.pb(i);
		if (possible()) ans.pb(i);
		nums.pop_back();
	}
	cout << ans.size() << '\n';
	for (auto el : ans) cout << el << ' '; cout << '\n';
}

Compilation message

bootfall.cpp: In function 'void print(std::vector<int>)':
bootfall.cpp:8:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
    8 |  for (auto el : x) cout << el << ' ';cout << '\n';
      |  ^~~
bootfall.cpp:8:38: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
    8 |  for (auto el : x) cout << el << ' ';cout << '\n';
      |                                      ^~~~
bootfall.cpp: In function 'int main()':
bootfall.cpp:67:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   67 |  for (auto el : ans) cout << el << ' '; cout << '\n';
      |  ^~~
bootfall.cpp:67:41: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   67 |  for (auto el : ans) cout << el << ' '; cout << '\n';
      |                                         ^~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 292 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 308 KB Output is correct
5 Correct 33 ms 296 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 42 ms 204 KB Output is correct
9 Correct 3 ms 312 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 292 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 308 KB Output is correct
5 Correct 33 ms 296 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 42 ms 204 KB Output is correct
9 Correct 3 ms 312 KB Output is correct
10 Correct 16 ms 312 KB Output is correct
11 Correct 56 ms 316 KB Output is correct
12 Correct 7 ms 204 KB Output is correct
13 Correct 2 ms 204 KB Output is correct
14 Correct 68 ms 204 KB Output is correct
15 Correct 41 ms 368 KB Output is correct
16 Correct 56 ms 312 KB Output is correct
17 Correct 11 ms 204 KB Output is correct
18 Correct 38 ms 312 KB Output is correct
19 Correct 30 ms 204 KB Output is correct
20 Correct 14 ms 320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 292 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 308 KB Output is correct
5 Correct 33 ms 296 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 42 ms 204 KB Output is correct
9 Correct 3 ms 312 KB Output is correct
10 Correct 16 ms 312 KB Output is correct
11 Correct 56 ms 316 KB Output is correct
12 Correct 7 ms 204 KB Output is correct
13 Correct 2 ms 204 KB Output is correct
14 Correct 68 ms 204 KB Output is correct
15 Correct 41 ms 368 KB Output is correct
16 Correct 56 ms 312 KB Output is correct
17 Correct 11 ms 204 KB Output is correct
18 Correct 38 ms 312 KB Output is correct
19 Correct 30 ms 204 KB Output is correct
20 Correct 14 ms 320 KB Output is correct
21 Execution timed out 1086 ms 312 KB Time limit exceeded
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 292 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 308 KB Output is correct
5 Correct 33 ms 296 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 42 ms 204 KB Output is correct
9 Correct 3 ms 312 KB Output is correct
10 Correct 16 ms 312 KB Output is correct
11 Correct 56 ms 316 KB Output is correct
12 Correct 7 ms 204 KB Output is correct
13 Correct 2 ms 204 KB Output is correct
14 Correct 68 ms 204 KB Output is correct
15 Correct 41 ms 368 KB Output is correct
16 Correct 56 ms 312 KB Output is correct
17 Correct 11 ms 204 KB Output is correct
18 Correct 38 ms 312 KB Output is correct
19 Correct 30 ms 204 KB Output is correct
20 Correct 14 ms 320 KB Output is correct
21 Execution timed out 1086 ms 312 KB Time limit exceeded
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 292 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 308 KB Output is correct
5 Correct 33 ms 296 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 42 ms 204 KB Output is correct
9 Correct 3 ms 312 KB Output is correct
10 Correct 16 ms 312 KB Output is correct
11 Correct 56 ms 316 KB Output is correct
12 Correct 7 ms 204 KB Output is correct
13 Correct 2 ms 204 KB Output is correct
14 Correct 68 ms 204 KB Output is correct
15 Correct 41 ms 368 KB Output is correct
16 Correct 56 ms 312 KB Output is correct
17 Correct 11 ms 204 KB Output is correct
18 Correct 38 ms 312 KB Output is correct
19 Correct 30 ms 204 KB Output is correct
20 Correct 14 ms 320 KB Output is correct
21 Execution timed out 1086 ms 312 KB Time limit exceeded
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 292 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 308 KB Output is correct
5 Correct 33 ms 296 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 42 ms 204 KB Output is correct
9 Correct 3 ms 312 KB Output is correct
10 Correct 16 ms 312 KB Output is correct
11 Correct 56 ms 316 KB Output is correct
12 Correct 7 ms 204 KB Output is correct
13 Correct 2 ms 204 KB Output is correct
14 Correct 68 ms 204 KB Output is correct
15 Correct 41 ms 368 KB Output is correct
16 Correct 56 ms 312 KB Output is correct
17 Correct 11 ms 204 KB Output is correct
18 Correct 38 ms 312 KB Output is correct
19 Correct 30 ms 204 KB Output is correct
20 Correct 14 ms 320 KB Output is correct
21 Execution timed out 1086 ms 312 KB Time limit exceeded
22 Halted 0 ms 0 KB -