Submission #1205295

#TimeUsernameProblemLanguageResultExecution timeMemory
1205295notme비스킷 담기 (IOI20_biscuits)C++20
9 / 100
1095 ms328 KiB
#include "biscuits.h"
#include <bits/stdc++.h>
using namespace std;
long long p[64];
long long n, k, cnt[64], has[64];
int take[64];
int solve(int val)
{
  //  cout << val << endl;
    for (int i = 0; i < 30; ++ i)
        has[i] = cnt[i];
    for (int i = 0; i < 30; ++ i)
    {
        if(val & p[i])take[i] = n;
        else take[i] = 0;
    }
    for (int i = 0; i < 30; ++ i)
    {
        if(has[i] < take[i])return 0;
        has[i] -= take[i];
        has[i+1] += has[i]/2;
    }
    return 1;
}
long long count_tastiness(long long x, std::vector<long long> a)
{
    k = a.size();
    n = x;
    long long sum = 0, val = 1;
   for (int i = 0; i < k; ++ i)
   {
       sum += val * a[i];
       cnt[i] = a[i];
       val *= 2;
   }
  // cout << sum << endl;
   p[0] = 1;
   for (int i = 1; i <= 20; ++ i)
        p[i] = p[i-1] * 2;
    long long ans = 1;
    //cout << sum << endl;
    for (int i = 1; i <= sum; ++ i)
    {

        if(i * x > sum)break;
       // cout << "trying " << i << endl;
        ans += solve(i);
    }
    return ans;
}

#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...