Submission #12662

#TimeUsernameProblemLanguageResultExecution timeMemory
12662dohyun0324배낭 문제 준비하기 (GA9_invknapsack)C++98
100 / 100
0 ms1840 KiB
#include<stdio.h> #include<algorithm> using namespace std; long long int n,k,a[310],d[310][310]; int arr[100],w,m; long long t,t2,sum; int main() { int i,j,l; scanf("%lld",&t); t2=t; while(t2>0) { arr[++w]=t2%2; t2/=2; } reverse(arr+1,arr+w+1); n=8+w; m=n; for(i=1;i<=9;i++) a[i]=(1<<i)/2; for(i=10;i<=n;i++) a[i]=1; //scanf("%lld %lld",&n,&k); //for(i=1;i<=n;i++) scanf("%lld",&a[i]); d[0][0]=1; for(i=1;i<=n;i++){ for(j=0;j<=300;j++){ if(j-a[i]>=0) d[i][j]=d[i-1][j-a[i]]; } for(j=0;j<=300;j++) d[i][j]+=d[i-1][j]; } //for(i=0;i<=300;i++) printf("%d ",d[n][i]); sum=d[n][w]; for(j=w-1;j>=0;j--) { while(1) { if(sum+d[n][j]<=t) { sum+=d[n][j]; a[++m]=300-j; } else break; } if(sum==t) break; } printf("%d %d\n",m,300); for(i=1;i<=m;i++) printf("%d ",a[i]); return 0; }
#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...