제출 #1357003

#제출 시각아이디문제언어결과실행 시간메모리
1357003opeleklanos비스킷 담기 (IOI20_biscuits)C++20
0 / 100
8 ms412 KiB
#include <iostream>
#include <vector>
using namespace std;

#define ll long long

ll solveSimple(vector<ll> a){
    vector<ll> dp = {1, 0, 0, 0};
    for(ll i = 0; i<a.size()-1; i++){
        ll c = (a[i]-1)/2;
        a[i+1] += c;
        a[i] -= c * 2;

        vector<ll> pdp = dp;
        dp = {0, 0, 0, 0};
        dp[0] = pdp[0] + pdp[1];

        if(a[i] == 0) dp[1] = pdp[2] + pdp[3];
        if(a[i] == 1){
            dp[1] = pdp[0] + pdp[1];
            dp[2] = pdp[2] + pdp[3];
        }
        if(a[i] == 2){
            dp[1] = dp[2] = dp[0] = pdp[0] + pdp[1];
            dp[3] = pdp[2] + pdp[3];
        }
    }

    return dp[0] + dp[1];
}

ll solveBruteforce(ll x, vector<ll> a){
    if(x>100000) return 1;
    ll ans = 0;
    for(ll i = 0; i<100000; i++){
        vector<ll> t(64, 0);
        for(int j = 0; j<a.size(); j++) t[j] = a[j];
        ll isAns = 1;
        for(ll j = 0; j<t.size()-1; j++){
            if(((ll)((ll)1<<(ll)j)) & i){
                if(t[j] < x){
                    isAns = 0;
                    break;
                }
                t[j] -= x;
            }
            t[j+1] += t[j]/2;
        }
        ans += isAns;
    }

    return ans;
}

ll count_tastiness(ll x, vector<ll> A){
    vector<ll> a(200, 0);
    for(ll i = 0; i<A.size(); i++) a[i] = A[i];
    ll prev0 = -1;
    ll prev2 = -1;
    ll ans = 1;
    vector<ll> dp = {1, 0, 0, 0};

    for(ll i = 0; i<a.size()-1; i++){
        ll k = a[i]%x;
        a[i+1] += k/2;
        a[i] -= k;
        a[i]/=x;
    }

    return solveBruteforce(x, a);
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…