下载数据本地测和答案一模一样!
但是WA提示就是说我第一个是0!
各种输出方式都试了,实在没有办法,求救!
#include<bits/stdc++.h>
using namespace std;
int n,k;
int ans[500000],o,now,a[500000],p;
int f[500000];
inline int dp(int x){
for(int i=1;i<=n*a[x];++i)
f[i]=99999999;
for(int i=1;i<=x;++i)
for(int j=a[i];j<=a[x]*n;++j)
f[j]=min(f[j],f[j-a[i]]+1);
for(int i=1;i<=a[x]*n;++i){
if(f[i]>n) return i-1;
}
}
inline void dfs(int num,int la){
if(num==k+1){
if(la>now){
o=0;
for(int i=1;i<=k;++i)
ans[++o]=a[o];
now=la;
}
return;
}
for(int i=a[num-1]+1;i<=la+1;++i){
a[num]=i;
int x=dp(num);
p=max(p,x);
dfs(num+1,x);
}
}
int main(){
scanf("%d%d",&n,&k);
dfs(1,0);
for(int i=1;i<=k;++i)
printf("%d ",ans[i]);
printf("\nMAX=%d",p);
return 0;
}