Submission #1115374

#TimeUsernameProblemLanguageResultExecution timeMemory
1115374vjudge1Bootfall (IZhO17_bootfall)C++17
13 / 100
181 ms8700 KiB
#include "bits/stdc++.h" using namespace std; int vis[700][3000]; int poss[5000]; int sm[3000]; int a[700]; 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]; } memset(vis, 0x3f, sizeof(vis)); 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 < 3000; 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 < 5000; 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...