Cod sursa(job #1682279)

Utilizator Vladi.BarasBaras Nicholas Vladimir Laurentiu Vladi.Baras Data 10 aprilie 2016 09:36:47
Problema Tablete Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;
int sol[10000000];
int   f[10000000];
ifstream cin("tablete.in");
ofstream cout("tablete.out");
int n,poz,k,semafor=1;
void afisare()
{
    for(int i=1; i<=n*n; i++){cout<<sol[i]<<"  ";if(i%n==0)cout<<'\n';


} cout<<'\n';semafor=0;
}
bool valid(int poz)
{
   if(f[sol[poz]])
    return false;
   if(poz%n==k&&sol[poz]%2!=0)
        return false;
   if(sol[poz]<sol[poz-1]&&poz%n!=1)
    return false;

    return true;
}
void gen (int poz)
{if(semafor){
    if(poz>n*n)afisare();
    else
        for(int i=1; i<=n*n; i++)
        {
            sol[poz]=i;

            if(valid(poz))

            {
                f[sol[poz]]=true;
              gen(poz+1);
            f[sol[poz]]=false;
            }
        }
}
}   int main()
{

    cin>>n>>k;
    gen(1);

    return 0;
}