距离放假还有5天ヽ(✿゚▽゚)ノ
距离我的寒假作业大军还有五天ヽ(°◇° )ノ
1.迭代深受入门
mzoj1005打水
#include<bits/stdc++.h>
#define st static
#define re return
#define Min(a,b) (a)<(b)?(a):(b)
#define Max(a,b) (a)>(b)?(a):(b)
#define inc(i,l,r) for(int i=l;i<=r;++i)
#define dec(i,l,r) for(int i=l;i>=r;--i)
#define mem(a,b) memset((a),(b),sizeof(a))
using namespace std;
template<typename T>void read(T&x)
{
char c;bool f=0;
while((c=getchar())<'0'||c>'9')if(c=='-')f=1;
x=c^48;
while((c=getchar())>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^48);
if(f)x=-x;
}
int n,m,k,md,vis[20005],a[105],ans[105];
bool jd()
{
mem(vis,0);
vis[0]=1;
inc(i,1,md)inc(j,ans[i],n)
vis[j]=vis[j]|(vis[j-ans[i]]);
if(vis[n])re 1;
re 0;
}
void print()
{
inc(i,1,md)
printf("%d ",ans[i]);
}
void dfs(int deep)
{
if(deep==md)
{
if(jd())
{
printf("%d ",deep);
print();
exit(0);
}
re ;
}
inc(i,1,m)
{
ans[++ans[0]]=a[i];
dfs(deep+1);
ans[0]--;
}
}
int main()
{
read(n);read(m);
inc(i,1,m)read(a[i]);
vis[0]=1;
sort(a+1,a+m+1);
for(md=1;;++md) dfs(0);
re 0;
}