Submission #566237

#TimeUsernameProblemLanguageResultExecution timeMemory
566237shrimbBootfall (IZhO17_bootfall)C++17
13 / 100
1082 ms156156 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; int dp[maxn][maxn*maxn]; bitset<maxn*maxn> ans; int n, tot, ex, total; int a[maxn]; int rec (int i, int sm) { if (sm < 0) return 0; if (i == n) return sm == 0; if (i == ex) return rec(i + 1, sm); if (dp[i][sm] != -1) return dp[i][sm]; return dp[i][sm] = rec(i + 1, sm) | rec(i + 1, sm - a[i]); } 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; memset(dp, -1,sizeof dp); if (!rec(0, total / 2)) { cout << 0 << endl; return 0; } ans[0] = 0; for (int i = 0 ; i < n ; i++) { tot = total - a[i]; ex = i; memset(dp, -1,sizeof dp); for (int j = 1 ; j <= total ; j++) { if ((tot+j)&1||!rec(0, (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...