Submission #1154927

#TimeUsernameProblemLanguageResultExecution timeMemory
1154927ladnooooBootfall (IZhO17_bootfall)C++20
100 / 100
334 ms5908 KiB
#include <bits/stdc++.h> using namespace std; //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") //#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3") #define pb push_back #define int long long const int maxN = 25e4 + 7; int dp[maxN], cnt[maxN]; void solveStupid() { int n; cin >> n; vector<int> a(n); int sum = 0; dp[0] = 1; for(int i = 0; i < n; i++) { cin >> a[i]; for(int j = maxN - 1; j >= a[i]; j--) { dp[j] += dp[j - a[i]]; } sum += a[i]; } if(sum % 2 == 1 || dp[sum / 2] == 0) { cout << "0\n"; return; } /*for(int i = 1; i <= sum; i++) { cout << i << ':' << dp[i] << '\n'; }*/ for(int i = 0; i < n; i++){ for(int j = a[i]; j < maxN; j++){ dp[j] -= dp[j - a[i]]; } for(int j = 0; j <= sum - a[i]; j++){ if(!dp[j]) continue; int x = j, y = sum - a[i] - j; cnt[abs(x - y)]++; } for(int j = maxN - 1; j >= a[i]; j--){ dp[j] += dp[j - a[i]]; } } vector<int> res; for(int i = 0; i < maxN; i++) { if(cnt[i] == n * 2) res.pb(i); } int z = res.size(); cout << z << '\n'; for(int x : res) { cout << x << ' '; } } signed main() { //freopen("input.txt", "r", stdin); //freopen("sum.in", "r", stdin); //freopen("sum.out", "w", stdout); ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); int t = 1; //cin >> t; while (t--) { solveStupid(); } }
#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...