Mai intai trebuie sa te autentifici.

Cod sursa(job #252021)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 3 februarie 2009 20:01:02
Problema Tablete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.9 kb
#include<stdio.h>
#define p 1001
int n,m,k,i,a[p][p],j,l;
int val[1000001];
void afis()
{
     int i,k;
     for(i=1;i<=n;i++,printf("\n"))
     for(k=1;k<=n;k++)
     printf("%d ", a[i][k]);
}
void fill(int w)
{
     int x=1;
     if(w==1)
     {
             
             for(i=1;i<=n;i++)
             for(j=1;j<=k;j++,x++)
          {   a[i][j]=x;
          val[x]=1;
           }l=1;
          for(i=1;i<=n;i++)
          for(j=k+1;j<=n;j++)
          {for(l;l<=n*n;l++)
          if(val[l]==0)
          {val[l]=1;
          a[i][j]=l;
           break;
          }
          }
          afis();
          return ;
}
           if(w==3 || w==2)
     {
             for(i=1;i<=k;i++)
          {  a[1][i]=i+1;
          val[i+1]=1;
          }
            a[2][1]=1;
            val[1]=1;
           for(i=k+2,j=2;j<=k;i++,j++)
           {  a[2][j]=i;
           val[i]=1;
           }
           for(i=3;i<=n;i++)
           {
                            a[i][1]=a[i-1][k]+2;
                            val[a[i][1]]=1;
                            for(j=2;j<=k;j++)
                           { a[i][j]=a[i][j-1]+1;
                           val[a[i][j]]=1;
                            }
                            }
                            l=1;
         for(i=1;i<=n;i++)
         for(j=k+1;j<=n;j++)
         {
                            for(l;l<=n*n;l++)
                            if(val[l]==0)
                            {val[l]=1;
                            a[i][j]=l;
                            break;
                            }}
           afis();
           return ;
           }
                  
}
int main ()
{
    freopen("tablete.in","r",stdin);
    freopen("tablete.out","w",stdout);
    scanf("%d%d",&n,&k);
    if(n%2==0 && k%2==0)
    fill(1);
    else
    if(n%2==1 && k%2==0)
    fill(2);
    else
    fill(3);
return 0;
}