Submission #173505

#TimeUsernameProblemLanguageResultExecution timeMemory
173505AllMightBootfall (IZhO17_bootfall)C++14
28 / 100
1080 ms632 KiB
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

const int N = 502;

int n;
int a[N];
int cnt[N * N];
vector <int> v;

void check(int ind)
{
	int mx = 0;
	vector <bool> knp(N * N, false);
	knp[0] = true;

	for (int i = 0; i < n; i++) {
		if (i == ind)	continue;
		for (int j = mx; j >= 0; j--) {
			if (knp[j]) {
				knp[j + a[i]] = true;
				mx = max(mx, j + a[i]);
			}
		}
	}

	int sum = mx;
	for (int i = 0; 2 * i < sum; i++) {
		if (!knp[i])	continue;
		int ans = sum - 2 * i;
		cnt[ans]++;
		if (ind == 0)
			v.push_back(ans);
	}
}

int main()
{
	ios_base::sync_with_stdio(false);

	cin >> n;

	int mx = 0;
	vector <bool> knp(N * N, false);
	knp[0] = true;
	for (int i = 0; i < n; i++) {
		cin >> a[i];
		for (int j = mx; j >= 0; j--) {
			if (knp[j]) {
				knp[j + a[i]] = true;
				mx = max(mx, j + a[i]);
			}
		}
	}
	int sum = mx;
	if (sum % 2 || !knp[sum / 2]) {
		cout << "0\n";
		return 0;
	}

	for (int i = 0; i < n; i++)
		check(i);

	vector <int> ans;
	for (int i = 0; i < v.size(); i++)
		if (cnt[v[i]] == n)
			ans.push_back(v[i]);

	sort(ans.begin(), ans.end());
	cout << ans.size() << endl;
	for (int i = 0; i < ans.size(); i++)
		cout << ans[i] << ' ';
	cout << endl;

	return 0;
}

Compilation message (stderr)

bootfall.cpp: In function 'int main()':
bootfall.cpp:68:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < v.size(); i++)
                  ~~^~~~~~~~~~
bootfall.cpp:74:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < ans.size(); 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...