Cod sursa(job #2254251)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 4 octombrie 2018 22:03:52
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.73 kb
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <fstream>
#include <iostream>
#define NM 1001
using namespace std;
ifstream f("tablete.in");
ofstream g("tablete.out");
int ap[NM*NM], sol[NM][NM],vali,i,j,N,K;
int main()
{
    f>>N>>K;
    if(K%2==0)
    {
        vali=1;
        for(i=1;i<=N;i++)
            for(j=1;j<=K;j++)
            {
                sol[i][j]=vali;
                vali++;
            }
    }
    else if(N%2==0)
    {
        vali=1;
        for(i=1;i<=N;i+=2)
        {
            for(j=1;j<=K;j++)
            {
                sol[i][j]=vali;
                sol[i+1][j]=vali+K;
                vali++;
            }
            vali=vali+K;
            sol[i][K]++;
            sol[i+1][1]--;
        }
        
    }
    else
    {
        vali=1;
        for(i=1;i<N;i+=2)
        {
            for(j=1;j<=K;j++)
            {
                ap[vali]=ap[vali+K]=1;
                sol[i][j]=vali;
                sol[i+1][j]=vali+K;
                vali++;
            }
            vali=vali+K;
            sol[i][K]++;
            sol[i+1][1]--;
        }
        for(j=1;j<K;j++) sol[N][j]=(N-1)*K+j; 
        sol[N][K]=N*K+1;
    }
    vali=N*K+1;
    for(i=1;i<=N;i++)
        for(j=K+1;j<=N;j++)
        {
            sol[i][j]=vali;
            ++vali;
        }
    if(N%2&&K%2) sol[1][K+1]--;
    for(i=1;i<=N;i++)
    {
        for(j=1;j<=N;j++) g<<sol[i][j]<<' ';
        g<<'\n';
    }
    return 0;
}