Submission #817755

#TimeUsernameProblemLanguageResultExecution timeMemory
817755Theo830Packing Biscuits (IOI20_biscuits)C++17
9 / 100
1071 ms67020 KiB
#include <bits/stdc++.h> using namespace std; #define f(i,a,b) for(int i = a;i < b;i++) #define ll long long #define ii pair<ll,ll> #define pb push_back #define F first #define S second #define iii pair<ll,ii> #include "biscuits.h" ll dp[1<<17][65]; ll a[65] = {0}; ll x; ll solve(ll extra,ll j,ll mask){ if(j > 60){ return 1; } if(dp[mask][j] != -1){ return dp[mask][j]; } extra += a[j]; ll neo = mask>>1; ll ans = solve(extra / 2,j+1,neo); if(extra >= x){ ans += solve((extra - x) / 2,j+1,neo + (1<<16)); } return dp[mask][j] = ans; } long long count_tastiness(long long X, vector<long long> A){ x = X; ll k = A.size(); memset(dp,-1,sizeof dp); f(i,0,65){ a[i] = 0; } f(i,0,k){ a[i] = A[i]; } f(i,0,60){ if(a[i] > x){ ll posa = a[i] - x; if(posa % 2 == 1){ a[i] = x+1; posa--; } else{ a[i] = x; } a[i+1] += posa / 2; } } return solve(0,0,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...