Submission #1115372

#TimeUsernameProblemLanguageResultExecution timeMemory
1115372vjudge1Bootfall (IZhO17_bootfall)C++17
13 / 100
192 ms5368 KiB
#include "bits/stdc++.h" using namespace std; int vis[500][2501]; int poss[2501]; int sm[2501]; int a[500]; int N; void dfs(int skip, int u = -1, int d = 0) { if (-1 ^ u) { vis[u][d] = skip; } sm[d] = 1; for (int j = u + 1; j < N; j ++) { if (j ^ skip && skip != vis[j][d + a[j]]) { dfs(skip, j, d + a[j]); } } } void solve() { cin >> N; for (int i = 0; i < N; i ++) { cin >> a[i]; } for (int i = 0; i <= 2500; i ++) { for (int j = 0; j < 500; j ++) { vis[j][i] = -1; } } int f = 1; for (int i = 0; i <= N; i ++) { memset(sm, 0, sizeof(sm)); int sum = 0; for (int j = 0; j < N; j ++) { if (i ^ j) { sum += a[j]; } } dfs(i); if (N == i) { f = sm[sum / 2] && !(sum & 1); continue; } for (int j = 0; j < 2501; j ++) { if (sm[j] && j * 2 > sum ) { poss[j * 2 - sum] ++; } } } if (0 == f) { cout << 0 << endl; return; } vector<int> ans; for (int j = 1; j < 2501; j ++) { if (poss[j] == N) { ans.push_back(j); } } cout << ans.size() << endl; for (int i : ans) { cout << i << ' '; } cout << endl; } int main() { solve(); }
#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...