제출 #1313225

#제출 시각아이디문제언어결과실행 시간메모리
1313225BigBadBully비스킷 담기 (IOI20_biscuits)C++20
100 / 100
9 ms824 KiB
#include "biscuits.h" #include <bits/stdc++.h> #define ll long long #define pii pair<ll,ll> #define ff first #define ss second using namespace std; ll count_tastiness(ll x, vector<ll> a) { auto v = a; while(v.size()<62) v.push_back(0); for (ll i = 0; i < 62; i++) { ll ol = v[i]; if (v[i]>x) v[i] = x+(v[i]-x)%2,v[i+1]+=(ol-v[i])/2; } ll sum = 0; vector<ll> dp(63,0); dp[0] = 1; vector<ll> rb(63,-1); for(ll i = 1; i <= 62; i++) { sum+=v[i-1]*(1ll<<i-1); ll rbv = -1; if(__int128(x)*__int128((1ll<<i-1))<2e18) { rbv = (sum-x*(1ll<<i-1))/x; if(sum<x*(1ll<<i-1)) rbv = -1; } rbv = min(rbv,(1ll<<i-1)-1); rb[i] = rbv; for(int bit = 61;bit >= 0;bit--) if((rbv+1)&(1ll<<bit)) dp[i]+=dp[bit],rbv-=(1ll<<bit),rbv=min(rbv,rb[bit+1]); dp[i]+=dp[i-1]; } return dp[61]; }
#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...