#include<fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int p[100];
void afis(int x[], int n, int m)
{
for(int i=1;i<=m;i++) fout<<x[i];
fout<<endl;
}
int bun(int x[], int k, int n, int m)
{
if(k>1)
{
if(x[k-1]*x[k]!=0) return 0;//2 examene alaturate
if(x[k]>1)//vreau sa pun examen
{ //caut examen cu 1 mai mic
for(int i=1;i<k;i++) if(x[i]==x[k]-1) return 1;
return 0;
}
}
if(x[1]>1) return 0;//nu pot incepe cu >1
if(x[k]==0)//vreau sa pun zi libera
{
int s=0;
for(int i=1;i<=k;i++) if(x[i]==0) s++;
if(s>m-n) return 0;//nu pot fi mai multi de 0 de m-n
}
return 1;
}
void back(int x[], int n, int m, int k)
{
int i;
for(i=0;i<=n;i++)
if(!p[i]||i==0) //examenele nu se repeta
{
x[k]=i;
p[i]=1;
if(bun(x,k,n,m)) if (k==m) afis(x,n,m);
else back(x,n,m,k+1);
p[i]=0;
}
}
int main()
{
int x[100],n,m;
fin>>n>>m;
back(x,n,m,1);
fin.close();
fout.close();
return 0;
}
|