Submission #1067119

#TimeUsernameProblemLanguageResultExecution timeMemory
1067119n1kPacking Biscuits (IOI20_biscuits)C++17
100 / 100
51 ms1116 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; using ll = long long; const int K = 61; ll X; vector<ll> sum(K); map<ll, ll> mem; ll fast(ll t){ if(mem.count(t)) return mem[t]; if(t==1) return 1; if(t<=0) return 0; ll msb = 63 - __builtin_clzll(t); if((1ll<<msb)==t) msb--; return mem[t]=fast(1ll<<msb) + fast(min(t, sum[msb]/X+1)-(1ll<<msb)); } long long count_tastiness(long long x, std::vector<long long> a) { sum.assign(K+5, 0); mem.clear(); X = x; for(int i=0; i<K; i++){ if(i<a.size()) sum[i]+=(1ll<<i)*a[i]; sum[i+1]+=sum[i]; } return fast(1ll<<K); } /* 1 4 1 0 0 0 0 */

Compilation message (stderr)

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:27:7: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |   if(i<a.size()) sum[i]+=(1ll<<i)*a[i];
      |      ~^~~~~~~~~
#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...