# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
378237 | 2021-03-16T10:01:47 Z | Thistle | Packing Biscuits (IOI20_biscuits) | C++14 | 1000 ms | 55892 KB |
#include "biscuits.h" #include <vector> #include<iostream> #include<algorithm> #include<unordered_map> #include<map> using namespace std; using ll=long long; using H=pair<ll, ll>; using vi=vector<ll>; #define rng(i,a,b) for(int (i)=(a);(i)<(b);(i)++) #define rep(i,n) rng((i),(0),(n)) #define pb push_back #define vec vector #define all(a) (a).begin(),(a).end() #define fs first #define sc second #define siz(a) ll((a).size()) long long count_tastiness(long long x, std::vector<long long> a) { ll k=siz(a); a.resize(60); rng(i,k,60) a[i]=0; unordered_map<ll, ll>mp[61]; //remain cookie -> able number //i no jiten de no atai ga t ika dattara j made tobashimasu //i+1 ha t ijou no atai nara soko ni iku keishiki ni narimasu vec<vi> num(60),val(60); rep(i,60){ ll sum=0,mn=1e18+1; rng(j,i+1,60){ sum>>=1; sum+=a[j]; if(sum>=x){ num[i].pb(mn); val[i].pb(j); mn=-1; break; } else{ int g=0; rep(r,60) if(((x-sum)>>r)&1) g=r; if(g+(j-i)>=61) continue; ll t=(x-sum)<<(j-i); if(mn>=t){ num[i].pb(mn); val[i].pb(j); mn=t-1; } } } if(mn>=0){ num[i].pb(mn); val[i].pb(60); } } rep(i,60) { reverse(all(num[i])); reverse(all(val[i])); } mp[0][0]=1; rep(i,60){ auto& now=mp[i]; auto& nxt=mp[(i+1)]; for(auto g:now){ ll t=g.fs; t+=a[i]; int r=i+1;//val[i][lower_bound(all(num[i]),t)-num[i].begin()]; mp[r][t>>(r-i)]+=g.sc; t-=x; if(t>=0){ r=i+1;//val[i][lower_bound(all(num[i]),t)-num[i].begin()]; mp[r][t>>(r-i)]+=g.sc; } } } ll ans=0; for(auto g:mp[60]){ ans+=g.sc; } return ans; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 364 KB | Output is correct |
2 | Correct | 2 ms | 364 KB | Output is correct |
3 | Correct | 2 ms | 364 KB | Output is correct |
4 | Correct | 2 ms | 364 KB | Output is correct |
5 | Correct | 2 ms | 364 KB | Output is correct |
6 | Correct | 2 ms | 364 KB | Output is correct |
7 | Correct | 2 ms | 364 KB | Output is correct |
8 | Correct | 2 ms | 364 KB | Output is correct |
9 | Correct | 2 ms | 364 KB | Output is correct |
10 | Correct | 2 ms | 364 KB | Output is correct |
11 | Correct | 2 ms | 364 KB | Output is correct |
12 | Correct | 2 ms | 364 KB | Output is correct |
13 | Correct | 2 ms | 364 KB | Output is correct |
14 | Correct | 3 ms | 364 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 364 KB | Output is correct |
2 | Correct | 1 ms | 364 KB | Output is correct |
3 | Correct | 2 ms | 364 KB | Output is correct |
4 | Correct | 2 ms | 364 KB | Output is correct |
5 | Correct | 1 ms | 364 KB | Output is correct |
6 | Correct | 1 ms | 364 KB | Output is correct |
7 | Correct | 2 ms | 364 KB | Output is correct |
8 | Correct | 1 ms | 364 KB | Output is correct |
9 | Correct | 1 ms | 364 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 66 ms | 15340 KB | Output is correct |
2 | Correct | 126 ms | 8428 KB | Output is correct |
3 | Correct | 205 ms | 13388 KB | Output is correct |
4 | Correct | 2 ms | 364 KB | Output is correct |
5 | Correct | 2 ms | 364 KB | Output is correct |
6 | Correct | 1 ms | 364 KB | Output is correct |
7 | Correct | 2 ms | 364 KB | Output is correct |
8 | Correct | 515 ms | 15724 KB | Output is correct |
9 | Correct | 351 ms | 11500 KB | Output is correct |
10 | Correct | 2 ms | 364 KB | Output is correct |
11 | Correct | 9 ms | 620 KB | Output is correct |
12 | Correct | 70 ms | 2668 KB | Output is correct |
13 | Correct | 513 ms | 15752 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1083 ms | 55892 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 364 KB | Output is correct |
2 | Correct | 2 ms | 364 KB | Output is correct |
3 | Correct | 2 ms | 364 KB | Output is correct |
4 | Correct | 2 ms | 364 KB | Output is correct |
5 | Correct | 2 ms | 364 KB | Output is correct |
6 | Correct | 2 ms | 364 KB | Output is correct |
7 | Correct | 2 ms | 364 KB | Output is correct |
8 | Correct | 2 ms | 364 KB | Output is correct |
9 | Correct | 2 ms | 364 KB | Output is correct |
10 | Correct | 2 ms | 364 KB | Output is correct |
11 | Correct | 2 ms | 364 KB | Output is correct |
12 | Correct | 2 ms | 364 KB | Output is correct |
13 | Correct | 2 ms | 364 KB | Output is correct |
14 | Correct | 3 ms | 364 KB | Output is correct |
15 | Correct | 2 ms | 364 KB | Output is correct |
16 | Correct | 1 ms | 364 KB | Output is correct |
17 | Correct | 2 ms | 364 KB | Output is correct |
18 | Correct | 2 ms | 364 KB | Output is correct |
19 | Correct | 1 ms | 364 KB | Output is correct |
20 | Correct | 1 ms | 364 KB | Output is correct |
21 | Correct | 2 ms | 364 KB | Output is correct |
22 | Correct | 1 ms | 364 KB | Output is correct |
23 | Correct | 1 ms | 364 KB | Output is correct |
24 | Correct | 66 ms | 15340 KB | Output is correct |
25 | Correct | 126 ms | 8428 KB | Output is correct |
26 | Correct | 205 ms | 13388 KB | Output is correct |
27 | Correct | 2 ms | 364 KB | Output is correct |
28 | Correct | 2 ms | 364 KB | Output is correct |
29 | Correct | 1 ms | 364 KB | Output is correct |
30 | Correct | 2 ms | 364 KB | Output is correct |
31 | Correct | 515 ms | 15724 KB | Output is correct |
32 | Correct | 351 ms | 11500 KB | Output is correct |
33 | Correct | 2 ms | 364 KB | Output is correct |
34 | Correct | 9 ms | 620 KB | Output is correct |
35 | Correct | 70 ms | 2668 KB | Output is correct |
36 | Correct | 513 ms | 15752 KB | Output is correct |
37 | Execution timed out | 1083 ms | 55892 KB | Time limit exceeded |
38 | Halted | 0 ms | 0 KB | - |