Cod sursa(job #231321)

Utilizator DorinOltean Dorin Dorin Data 14 decembrie 2008 12:07:12
Problema Tablete Scor 100
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 9-10 Marime 1.87 kb
# include <stdio.h>
# include <fstream>

using namespace std;

# define input "tablete.in"
# define output "tablete.out"

# define max 1001

int a[max][max],n,k,i,j,nr;

void afiseaza()
{
     for ( i = 1; i <= n; i++)
     {
        for ( j = 1; j<=n; j++)
            printf("%d ",a[i][j]);
        printf("\n");
     }
}

int main()
{
    freopen(input, "r", stdin);
    freopen(output, "w", stdout);
    
    scanf("%d%d",&n,&k);
    
    if( k % 2== 0 && n % 2 == 0)
    {
        nr = 1;
     for ( i = 1; i <= n; i++)
        for ( j = 1; j<=n; j++)
            a[i][j] = nr++;
        afiseaza();
     return 0;
     }
     
     if ( k % 2 == 1 and n%2 == 0)
     {
          nr = 2;
          for ( i = 1; i < n; i++)
        for ( j = 1; j<=n; j++)
            a[i][j] = nr++;
            
        a[n][1] = 1;
        a[n-1][n] = n*n;
        nr--;
        for ( j = 2; j<= n; j++)
            a[n][j] = nr++;
        afiseaza();
        return 0;
     }
     
     if( k % 2 )
     {
         nr = 1;
         for (i = 1; i< n; i+=2)
         {
             nr++;
             int x= nr;
             for ( j = 1 ; j<= n; j++)
                 a[i][j] = nr ++;
             a[i+1][1] = x-1;
             for ( j =2; j<=n; j++)
                 a[i+1][j] = nr++;             
         }
         a[n-1][n] = n*n;
         nr --;
         for ( j = 1; j<=n ;j++)
             a[n][j] = nr++;
         
         
         afiseaza();
         return 0;
     }
     
     nr = 1;
     for ( i = 1; i<= n ;i++)
         a[1][i] = nr++;
     for ( i = 2; i<= n; i+=2)
     {
         int x = nr;
         nr ++;
         for ( j = 1; j<= n; j++)
             a[i][j] = nr++;
         a[i+1][1] = x;
         for ( j = 2; j <= n; j++)
             a[i+1][j] = nr++;
     }
    
     afiseaza();
     return 0;
}