Cod sursa(job #2031207)

Utilizator Mirela_MagdalenaCatrina Mirela Mirela_Magdalena Data 2 octombrie 2017 20:40:25
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <fstream>

using namespace std;

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

int n, k, a[1001][1001];
int lk[1001];

void form_lk()
{
    for(int i=1; i<n; i++)
        {
            int x=n*(i-1) + (k-1);
            if(x%2 == 1)
                x--;
            a[i][k]=x+2;
            lk[i]=x+2;
        }
    a[n][k] = (n*n-(n-k))/2*2;
    lk[n] = a[n][k];
}


void jum1()
{
    int nr=1;
    int l=1;
    int vmin = a[l][k];
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=k-1; j++)
        {
            if(nr == vmin)
                {nr++; vmin=a[++l][k];}
            a[i][j] = nr;
            nr++;
        }
    }

}



void jum2()
{
    int l=n;
    int vmax = a[l][k];
    int nr = n*n;
    for(int i=n; i>=1; i--)
    {
        for(int j=n; j>=k+1; j--)
        {
            if(nr == vmax)
                {vmax = a[--l][k]; nr--;}
            a[i][j] = nr;
            nr--;
        }
    }
}



void afis()
{
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
            g<<a[i][j]<<" ";
        g<<endl;
    }
}



int main()
{
    f>>n>>k;

    if(n%2==0 && k % 2 == 0)
    {
        for(int i=1; i<=n; i++)
        {
            for(int j=n*(i-1) + 1; j<=n*i; j++)
                g<<j<<" ";
            g<<'\n';
        }
    }
    else{
            form_lk();
            jum1();
            jum2();
            afis();
    }
    return 0;
}