Cod sursa(job #800321)

Utilizator thesilverhand13FII Florea Toma Eduard thesilverhand13 Data 21 octombrie 2012 12:35:01
Problema Tablete Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
 # include <fstream>
 # include <cstring>
 # include <algorithm>

 # define dim 1005

 using namespace std;

 ifstream f("tablete.in");
 //ofstream g("tablete.out");


 int a[ dim ][ dim ];
 int viz[ dim * dim ];
 int n, k;

 void citire()
 {
     f >> n >> k;
 }

 void afisare()
 {
     int i, j;


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

         //g << "\n";
     }


 }

 void rezolva()
 {
     int i, j, nr = 1;

     for ( i = 1 ; i <= n ; i++ )
     {
         nr = i * k;
         for ( j = k ; j >= 1 ; j-- )
         {
             if ( j == k )
             {
                 while( nr % 2 != 0 || viz[ nr ] == 1 )
                   nr++;
                 a[ i ][ j ] = nr;
                 viz[ nr ] = 1;
             }
             else
             {
                 while( viz[ nr ] == 1 )
                   nr--;
                 a[ i ][ j ] = nr;
                 viz[ nr ] = 1;
             }
         }
     }

     for ( i = n ; i >= 1 ; i-- )
     {
         for ( j = k + 1 ; j <= n ; j++ )
         {
             nr = a[ i ][ j - 1 ];
             while( viz[ nr ] == 1 )
                nr++;
             a[ i ][ j ] = nr;
             viz[ nr ] = 1;

         }
     }

 }

 int main()
 {
     freopen ("tablete.out", "w", stdout );
     citire();
     rezolva();
     afisare();
     return 0;
 }