Submission #1052077

#TimeUsernameProblemLanguageResultExecution timeMemory
1052077dozerPacking Biscuits (IOI20_biscuits)C++14
0 / 100
45 ms604 KiB
#include "biscuits.h" #include<bits/stdc++.h> using namespace std; #define fileio() freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout) #define fastio() cin.tie(0), ios_base::sync_with_stdio(0) #define sp " " #define endl "\n" #define pii pair<int, int> #define st first #define nd second #define pb push_back #define ll long long #define LL node * 2 #define RR node * 2 + 1 #define N 65 const int modulo = 1e9 + 7; const ll INF = 2e18 + 7; ll arr[N], X, M; map<ll, ll> dp[N]; ll f(int pos, ll sum){ if (pos >= N) return 1; if (dp[pos].count(sum)) return dp[pos][sum]; ll curr_sum = sum + arr[pos]; ll t1 = 0, t2 = 0; if (curr_sum >= X) t1 = f(pos + 1, min(M, (curr_sum - X) / 2)); t2 = f(pos + 1, min(curr_sum / 2, M)); return dp[pos][sum] = t1 + t2; } long long count_tastiness(long long x, vector<long long> a) { int n = a.size(); X = x; if (x < INF / N) M = x * N; else M = INF; for (int i = 0; i < N; i++) arr[i] = 0, dp[i].clear(); for (int i = 0; i < n; i++) arr[i] = a[i]; ll res = f(0, 0); return res; } /* int main() { fileio(); int q; assert(scanf("%d", &q) == 1); vector<int> k(q); vector<long long> x(q); vector<vector<long long>> a(q); vector<long long> results(q); for (int t = 0; t < q; t++) { assert(scanf("%d%lld", &k[t], &x[t]) == 2); a[t] = vector<long long>(k[t]); for (int i = 0; i < k[t]; i++) { assert(scanf("%lld", &a[t][i]) == 1); } } fclose(stdin); for (int t = 0; t < q; t++) { results[t] = count_tastiness(x[t], a[t]); } for (int t = 0; t < q; t++) { printf("%lld\n", results[t]); } fclose(stdout); 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...