Submission #1207630

#TimeUsernameProblemLanguageResultExecution timeMemory
1207630simona1230비스킷 담기 (IOI20_biscuits)C++20
0 / 100
1096 ms652 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; vector<long long> v; long long p[128],h[64]; long long ans; long long nd; long long pw[128][128]; void dfs(int i,long long x) { ans++; //cout<<i<<" ? "<<x<<endl; for(int j=i+1;j<=120;j++) { long long y=x; for(int k=i+1;k<=j;k++) { y/=2; y+=pw[k][k]; } if(y>=nd) { //cout<<i<<" "<<x<<" "<<j<<" "<<y<<endl; dfs(j,y-nd); } } //cout<<i<<" ! "<<x<<endl; } long long count_tastiness(long long x, std::vector<long long> a) { /*cout<<"in"<<endl; cout<<x<<endl; for(int i=0;i<a.size();i++) cout<<a[i]<<" "; cout<<endl;*/ nd=x; ans=0; p[0]=1; for(long long i=1;i<=125;i++) { if(1e18/p[i-1]<2)p[i]=1e18+1; else p[i]=p[i-1]*2; //cout<<p[i]<<endl; } for(int j=0;j<=120;j++) { pw[j][j]=0; if(j<a.size()) { pw[j][j]=a[j]; //cout<<j<<" "<<j<<" "<<pw[j][j]<<endl; } for(int i=j-1;i>=0;i--) { pw[i][j]=pw[i+1][j]; if(i<a.size()) { pw[i][j]+=a[i]/p[j-i]; //cout<<i<<" "<<j<<" "<<pw[i][j]<<endl; } } } dfs(-1,0); //cout<<ans<<endl; //////////////////// /*long long sum=0; for(long long i=0;i<a.size();i++) sum+=a[i]*p[i]; //cout<<sum/x<<endl; long long ans1=1; for(long long g=1;g<=sum/x;g++) { for(long long i=0;i<a.size();i++) h[i]=a[i]; long long maxx=0,num=0; while(num<x) { long long curr=g; for(long long i=a.size()-1;i>=0;i--) { long long need=min(h[i],curr/p[i]); h[i]-=need; curr-=need*p[i]; } if(curr!=0)break; num++; } if(num==x)ans1++; } if(ans1!=ans) { cout<<x<<endl; for(int i=0;i<a.size();i++) cout<<a[i]<<" "; cout<<endl; exit(0); }*/ return ans; }
#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...