Cod sursa(job #2031378)

Utilizator AndonePresedinteAndone Alexandru AndonePresedinte Data 3 octombrie 2017 09:44:02
Problema Tablete Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("tablete.in");
ofstream g("tablete.out");
int n, k;
int a[1000][1000];
int nr[1000000];
void formare()
{
    for(int i=0; i<n*n; i++)
        nr[i]=i+1;
}

void kpar()
{
    int x=0;
    for(int i=0; i<n; i++)
        for(int j=0; j<k; j++)
        {
            a[i][j]=nr[x];
            x++;
        }
}
void kimp()
{
    int x=0;
    int y=1;
    for(int i=0; i<n; i++)
    {
        if(i%2==1)
        {
            x--;
            for(int j=0; j<k; j++)
            {
                a[i][j]=nr[x];
                if(j==0)
                    x++;
                x++;
            }
            y++;

        }
        if(i%2==0)
        {
            for(int j=0; j<k; j++)
            {
                a[i][j]=nr[x];
                if(nr[x]==y*k-1)
                    x++;
                x++;
            }
            x--;
            y++;
        }
    }

}

void jum()
{
    int x=a[n-1][k-1]+1;
    int b=0;
    if(n%2==0)
    {
        for(int i=0; i<n; i++)
            for(int j=k; j<n; j++)
            {
                a[i][j]=x;
                x++;
            }
    }
    else
    {
        a[0][k]=x-2;
        for(int i=0; i<n; i++)
            for(int j=k; j<n; j++)
            {
                if(i==0&&j==k)
                    b++;
                else
                {
                    a[i][j]=x;
                    x++;
                }
            }
    }

}

void afisare()
{
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
            g<<a[i][j]<<' ';
        g<<'\n';
    }
}
int main()
{
    f>>n>>k;
    if(k%2==0) {formare(); kpar();}
    if(k%2==1 && n%2==0) {formare(); kimp();}
    if(k%2==1 && n%2==1) {formare(); kimp();}
    jum();
    afisare();
    return 0;
}