이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
//#define int long long 
#define ff first
#define ss second
#define pii pair<int, int>
#define all(x) x.begin(), x.end()
#define rep(i, a, b) for (int i = (int)a; i <= (int)b; ++i)
#define rep1(i, a, b) for (int i = (int)a; i >= (int)b; --i)
#define mp make_pair
#define vii vector<vector<int>>
#define ll long long 
ll count_tastiness(ll x, vector<ll> a) {
    function<void()> merge = [&]() {
        while(a.size()<61) a.push_back(0);
        int n = a.size();
        rep(i, 0, n - 2) {
            if (a[i] <= 2) continue;
            a[i + 1] += (a[i] - 1) / 2;   
            a[i] = 2 - (a[i] % 2);
        }
    };
    
    merge();
    ll ans = 1, cur = 0;
    // rep(i, 0, a.size() - 1) {
    //     cout << a[i] << ' ';
    // }
    //cout << '\n';
    rep1(k, 60, 0) {
        if (a[k] == 0) {
            ans *= (cur + 1);
            cur = 0;
            //the 0 seperate two segments because none of them is constrained to the other
        }  
        else {
            cur = cur * 2 + a[k];
            // x2 if for not use a[i] and use 1 * (2^i)
            // + a[i] means: if a[i] = 1, there is y = 2^i + 0*(2^(i+1)) + 0*...
            //if a[i] = 2, there is a possible value (the max one): 2*(2^i) + a[i+1]*(2^i+1) + ... (?)
            // explain (?): if we use 2*(2^i), then we cannot use (a[i+1]-x)*(2^i+1)  (for some x>0)
            //because we've already use (a[i+1]-x+1)*(2^i+1) 
            //i.e. 2*(2^i)+(a[i+1]-x)*(2^i+1) = (a[i+1]-x+1)*(2^i+1) 
            //=> we have to use a[i]*(2^i) for all i => max value. 
            //(This is the key reason why we iterate i from big to small)
        } 
    }
    ans *= (cur + 1);
    return ans;
}
// int main() {
//     long long x;
//     vector<long long> v(61);
//     cin >> x;
//     rep(i, 0, 4) {
//         cin >> v[i];
//     }
//     cout << count_tastiness(x, v);
// }
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |