Submission #172880

#TimeUsernameProblemLanguageResultExecution timeMemory
172880VEGAnnBootfall (IZhO17_bootfall)C++14
44 / 100
472 ms1016 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("unroll-loops") #pragma GCC optimize ("-O3") #pragma GCC optimize ("Ofast") #define sz(x) ((int)x.size()) #define PB push_back #define all(x) x.begin(),x.end() using namespace std; const int N = 273; const int N2 = N * N; const int PW = 20; const int oo = 2e9; bitset<N2 * 2> f[2], cle, full; vector<int> vc; int n, a[N], ed; void calc(){ ed = 0; f[0] = cle; f[0][N2] = 1; for (int i = 0; i < sz(vc); i++){ ed ^= 1; int cr = a[vc[i]]; f[ed] = (f[ed ^ 1] >> cr) | (f[ed ^ 1] << cr); } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); // freopen("in.txt","r",stdin); vc.clear(); cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; vc.PB(i); } calc(); if (f[ed][N2] == 0){ cout << 0; return 0; } sort(a, a + n); for (int i = 0; i < N2 + N2; i++) full[i] = 1; for (int i = 0; i < n; i++){ if (i > 0 && a[i] == a[i - 1]) continue; vc.clear(); for (int j = 0; j < n; j++) if (j != i) vc.PB(j); calc(); full &= f[ed]; } vc.clear(); for (int i = 1; i < N2; i++) if (full[N2 + i]) vc.PB(i); cout << sz(vc) << '\n'; for (int x : vc) cout << x << '\n'; return 0; }
#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...