Submission #1052533

#TimeUsernameProblemLanguageResultExecution timeMemory
1052533dozerPacking Biscuits (IOI20_biscuits)C++14
33 / 100
40 ms83036 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 130 #define M 20005 const int modulo = 1e9 + 7; const ll INF = 2e18 + 7; ll arr[N], X; ll dp[N][M], done[N][M]; int n; ll f(int pos, ll sum){ if (pos >= N) return 1; if (done[pos][sum]) return dp[pos][sum]; ll curr_sum = sum + arr[pos]; ll t1 = 0, t2 = 0; if (curr_sum >= X) t1 = f(pos + 1, (curr_sum - X) / 2); t2 = f(pos + 1, curr_sum / 2); done[pos][sum] = 1; //cout<<pos<<sp<<sum<<sp<<t1<<sp<<t2<<endl; return dp[pos][sum] = t1 + t2; } long long count_tastiness(long long x, vector<long long> a) { n = a.size(); X = x; for (int i = 0; i < (int)a.size(); i++){ if (a[i] > x + 1){ if (i < n - 1) a[i + 1] += (a[i] - x) / 2; else a.pb((a[i] - x) / 2); a[i] = a[i] - ((a[i] - x) / 2) * 2; } } n = a.size(); for (int i = 0; i < N; i++){ arr[i] = 0; for (int j = 0; j <= 2 * x; j++) done[i][j] = 0; } 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...