Submission #720591

#TimeUsernameProblemLanguageResultExecution timeMemory
720591bin9638비스킷 담기 (IOI20_biscuits)C++17
42 / 100
1080 ms49920 KiB
#include <bits/stdc++.h>

#ifndef SKY
#include "biscuits.h"
#endif // SKY

using namespace std;

#define N 1010
#define ll long long
#define fs first
#define sc second
#define ii pair<int,int>
#define pb push_back

const int num_bit=60;

int n;
vector<ll>a;
unordered_map<ll,ll>mp[N];
ll m;

ll get(ll sl,int pos)
{
    if(pos==num_bit)
        return 1;
    if(mp[pos].find(sl)!=mp[pos].end())
        return mp[pos][sl];
    ll res=get((sl+a[pos])/2,pos+1);
    if(sl+a[pos]>=m)
        res+=get((sl+a[pos]-m)/2,pos+1);
    return(mp[pos][sl]=res);
}

ll count_tastiness(ll cc, vector<ll> vec)
{
    n=vec.size();
    a=vec;
    m=cc;
    while(n<60)
        a.pb(0),n++;
    for(int i=0;i<num_bit;i++)
        mp[i].clear();
    return get(0,0);
}

#ifdef SKY
int main()
{
    freopen("A.inp","r",stdin);
    freopen("A.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    ll x,k;
    cin>>x>>k;
    vector<ll>a(k);
    for(int i=0;i<k;i++)
    {
        cin>>a[i];
     //   a[i]=1ll*rand()*rand()%((ll)1e9/(i+1))+1;
    }
    cout<<count_tastiness(x,a);
    return 0;
}
#endif
#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...