This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |