제출 #306320

#제출 시각아이디문제언어결과실행 시간메모리
306320MrDomino비스킷 담기 (IOI20_biscuits)C++14
0 / 100
1093 ms384 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

ll x;
vector<ll> a;
vector<ll> limit;
int n;
int sol;

const ll INF = (ll) 2e18;

ll mul(ll x, ll y)
{
    if (x == 0 || y == 0)
    {
        return 0;
    }
    ll p = x * y;
    if (p % x == 0 && p / x == y && p <= INF)
    {
        return p;
    }
    else
    {
        return INF;
    }
}

void bkt(int i, ll sum)
{
    if (i == 60)
    {
        sol++;
        return;
    }
    if (sum <= limit[i])
    {
        bkt(i + 1, sum);
    }
    if (sum + mul(x, (1LL << i)) <= limit[i])
    {
        ll k = sum + x * (1LL << i);
        bkt(i + 1, sum + x * (1LL << i));
    }
}

ll count_tastiness(ll xx, vector<ll> aa)
{
    sol = 0;
    x = xx;
    a = aa;
    n = (int) a.size();
    limit = a;
    ll c = 0;
    for (int i = 0; i < n; i++)
    {
        c += (1LL << i) * a[i];
        limit[i] = c;
    }
    while ((int) limit.size() < 60)
    {
        limit.push_back(limit.back());
    }
    bkt(0, 0);
    return sol;
}

컴파일 시 표준 에러 (stderr) 메시지

biscuits.cpp: In function 'void bkt(int, ll)':
biscuits.cpp:45:12: warning: unused variable 'k' [-Wunused-variable]
   45 |         ll k = sum + x * (1LL << 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...