Cod sursa(job #1542237)

Utilizator gedicaAlpaca Gedit gedica Data 5 decembrie 2015 10:36:57
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.46 kb
#include <fstream>

using namespace std;

const int NMAX= 1000;

ifstream in( "tablete.in" );
ofstream out( "tablete.out" );

int v[NMAX+1][NMAX+1];

int main(  )
{
    int N, K, cntr= 1;
    in >> N >> K;

    if( K%2==0 )
    {
        for( int i= 1; i<=N; ++i )
        {
            for( int j= 1; j<=K; ++j )
            {
                v[i][j]= cntr;
                ++cntr;
            }
        }
        for( int i= 1; i<=N; ++i )
        {
            for( int j= K+1; j<=N; ++j )
            {
                v[i][j]= cntr;
                ++cntr;
            }
        }
        for( int i= 1; i<=N; ++i )
        {
            for( int j= 1; j<=N; ++j )
            {
                out << v[i][j] << ' ';
            }
            out << '\n';
        }
        return 0;
    }

    if( N%2==0 )
    {
        for( int i= 1; i<=N; ++i )
        {
            v[i][1]= cntr;
            ++cntr;
        }
        for( int i= 1; i<=N; ++i )
        {
            for( int j= 2; j<=K; ++j )
            {
                v[i][j]= cntr;
                ++cntr;
            }
        }
        for( int i= 1; i<=N; ++i )
        {
            for( int j= K+1; j<=N; ++j )
            {
                v[i][j]= cntr;
                ++cntr;
            }
        }
        for( int i= 1; i<=N; ++i )
        {
            for( int j= 1; j<=N; ++j )
            {
                out << v[i][j] << ' ';
            }
            out << '\n';
        }
        return 0;
    }

    if( N%2==1 )
    {
        for( int i= 1; i<=N; ++i )
        {
            v[i][1]= cntr;
            ++cntr;
        }
        v[N][2]= cntr;
        ++cntr;
        for( int i= 1; i<=N; ++i )
        {
            for( int j= 2; j<=K; ++j )
            {
                if( v[i][j]==0 )
                {
                    v[i][j]= cntr;
                    ++cntr;
                }
            }
        }
        for( int i= 1; i<=N; ++i )
        {
            for( int j= K+1; j<=N; ++j )
            {
                v[i][j]= cntr;
                ++cntr;
            }
        }

        int aux=v[N][K];
        v[N][K]= v[1][K+1];
        v[1][K+1]= aux;

        for( int i= 1; i<=N; ++i )
        {
            for( int j= 1; j<=N; ++j )
            {
                out << v[i][j] << ' ';
            }
            out << '\n';
        }
        return 0;
    }

    return 0;
}