제출 #1022321

#제출 시각아이디문제언어결과실행 시간메모리
1022321JakobZorz비스킷 담기 (IOI20_biscuits)C++17
100 / 100
37 ms1624 KiB
#include"biscuits.h" #include<unordered_map> #include<iostream> typedef long long ll; using namespace std; ll x; ll coins[62]; ll s[62]; unordered_map<ll,ll>dp; ll count(ll n){ if(n==1) return 1; if(n<1) return 0; if(dp.count(n)) return dp[n]; int i=0; ll pw2=2; while(pw2<n){ pw2*=2; i++; } pw2/=2; return dp[n]=count(pw2)+count(min(n,s[i]/x+1)-pw2); } ll count_tastiness(ll X,vector<ll>a){ x=X; dp.clear(); for(int i=0;i<62;i++){ coins[i]=0; } for(int i=0;i<(int)a.size();i++) coins[i]=a[i]; for(int i=0;i<62;i++){ ll num=(coins[i]-x)/2; if(num>0){ coins[i+1]+=num; coins[i]-=2*num; } s[i]=(1LL<<i)*coins[i]; if(i) s[i]+=s[i-1]; } return count(1LL<<62); }
#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...