Submission #1220834

#TimeUsernameProblemLanguageResultExecution timeMemory
1220834brintonPacking Biscuits (IOI20_biscuits)C++20
100 / 100
27 ms948 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; /* key: all prefix is less than -> valid solution */ long long count_tastiness(long long x, vector<long long> a) { a.resize(60); vector<long long> sum(60,0); for(int i = 0;i < 60;i++){ if(i > 0) sum[i] = sum[i-1]; sum[i] += a[i]*(1LL << i); } vector<long long> limit(60); for(int i = 0;i < 60;i++){ limit[i] = min((1LL<<(i+1))-1,sum[i]/x); } map<long long,long long> mp; mp[(1L << 60)-1] = 1; for(int i = 59;i >= 0;i--){ map<long long,long long> nmp; for(auto &[rclim,rcnt]:mp){ long long clim = rclim,cnt = rcnt; clim = min(clim,limit[i]); if(clim >= (1LL << i)){ nmp[(1LL << i)-1] += cnt; clim -= (1LL << i); } nmp[clim] += cnt; } swap(mp,nmp); } long long tot = 0; for(auto [clim,cnt]:mp){ tot += cnt; } return tot; }
#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...