Submission #853377

#TimeUsernameProblemLanguageResultExecution timeMemory
853377abcvuitunggio비스킷 담기 (IOI20_biscuits)C++17
100 / 100
31 ms968 KiB
#include "biscuits.h"
#define int long long
int dp[60][60],v[60];
int f(int i, int j){
    if (i<0)
        return 1;
    if (dp[i][j]!=-1)
        return dp[i][j];
    dp[i][j]=f(i-1,(i&&v[i-1]%(1LL<<i)<v[j]%(1LL<<i)?i-1:j));
    if ((v[j]>>i)&1)
        dp[i][j]+=f(i-1,i-1);
    return dp[i][j];
}
int count_tastiness(int x, std::vector <int> a){
    std::fill(v,v+60,0);
    for (int i=0;i<a.size();i++)
        v[i]=(a[i]<<i);
    for (int i=1;i<60;i++)
        v[i]+=v[i-1];
    for (int i=0;i<60;i++)
        v[i]=std::min(v[i]/x,(1LL<<(i+1))-1);
    for (int i=0;i<60;i++)
        for (int j=0;j<60;j++)
            dp[i][j]=-1;
    return f(59,59);
}

Compilation message (stderr)

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:16:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |     for (int i=0;i<a.size();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...