Submission #417915

#TimeUsernameProblemLanguageResultExecution timeMemory
417915TheScrassePacking Biscuits (IOI20_biscuits)C++14
0 / 100
1 ms332 KiB
// IOI20_biscuits #include <bits/stdc++.h> #include "biscuits.h" using namespace std; #define nl "\n" #define nf endl #define ll long long #define pb push_back #define _ << ' ' << #define INF (ll)1e18 #define mod 1000000007 #define maxn 65 ll i, i1, j, k, k1, t, n, m, res, flag[10], a[maxn], b[maxn]; ll x, dp[maxn], l; void solve(ll u, ll p) { // cout << "solve " << u _ p _ a[p] << nl; ll i; if (a[p] >= x) { dp[u] += dp[p - 1]; return; } for (i = p - 1; i >= 1; i--) { a[p] = 2 * a[p] - x; if (a[p] < -INF) return; if (x - a[p] <= a[i]) { a[i] -= x - a[p]; a[p] = x; } else { a[p] += a[i]; a[i] = 0; } // cout << "i, a[p] = " << i _ a[p] << nl; if (a[p] >= x) { dp[u] += dp[i - 1]; solve(u, i); return; } } } void reset() { ll i; for (i = 1; i <= n; i++) a[i] = b[i]; } long long count_tastiness(long long X, vector<long long> A) { x = X; n = A.size(); for (i = 1; i <= n; i++) { a[i] = A[i - 1]; b[i] = A[i - 1]; } dp[0] = 1; for (i = 1; i <= n; i++) { dp[i] += dp[i - 1]; reset(); solve(i, i); } /* for (i = 0; i <= n; i++) cout << dp[i] << ' '; cout << nl; */ res = dp[n]; return res; }
#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...