Submission #566289

#TimeUsernameProblemLanguageResultExecution timeMemory
566289shrimbBootfall (IZhO17_bootfall)C++17
28 / 100
1087 ms156808 KiB
#pragma GCC optimize ("Ofast") #pragma GCC target ("avx,avx2,fma") #include"bits/stdc++.h" using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; template<class x> using ordered_set = tree<x, null_type,less<x>, rb_tree_tag,tree_order_statistics_node_update>; // #define int long long #define endl '\n' #define mod 1000000007 //\ #define mod 1686876991 const int maxn = 271; vector<vector<int>> dp0(maxn, vector<int>(maxn*maxn)), dp1(maxn, vector<int>(maxn*maxn)); bitset<maxn*maxn> ans; int n, tot, ex=-1, total; int a[maxn]; void rec () { for (int i = n ; i >= 0 ; i--) { for (ex = 0 ; ex <= n ; ex++) { for (int j = 0 ; j <= total ; j++) { if (i == n) dp0[ex][j] = j == 0; else if (i == ex) dp0[ex][j] = dp1[ex][j]; else dp0[ex][j] = dp1[ex][j] || (j - a[i] < 0 ? 0 : dp1[ex][j - a[i]]); } } swap(dp0, dp1); } swap(dp0, dp1); } signed main () { cin.tie(0)->sync_with_stdio(0); cin >> n; for (int i = 0 ; i < n ; i++) cin >> a[i], total += a[i]; for (int i = 0 ; i <= total ; i++) ans[i] = 1; rec(); if (!dp0[n][total/2]) { cout << 0 << endl; return 0; } // cerr << "here\n"; ans[0] = 0; for (int i = 0 ; i < n ; i++) { tot = total - a[i]; ex = i; for (int j = 1 ; j <= total ; j++) { if ((tot+j)&1||!dp0[i][(tot+j)/2]) { ans[j] = 0; } } } cout << ans.count() << endl; for (int i = 0 ; i <= total ; i++) if (ans[i]) cout << i << " "; }

Compilation message (stderr)

bootfall.cpp:17:1: warning: multi-line comment [-Wcomment]
   17 | //\
      | ^
#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...