Cod sursa(job #1675659)

Utilizator antanaAntonia Boca antana Data 5 aprilie 2016 14:43:40
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <cstdio>
#define MAX 1000
using namespace std;
int v[MAX+1][MAX+1];
int main()
{
    freopen("tablete.in", "r", stdin);
    freopen("tablete.out", "w", stdout);
    int n, k, el, i, j, pred;
    scanf("%d%d", &n, &k);
    if(n%2==0&&k%2==0){
        for(i=1;i<=n;i++){
            for(j=1;j<=n;j++)
                printf("%d ", (i-1)*n+j);
            printf("\n");
        }
    }
    else
    {
        el=k;
        for(i=1;i<=n;i++)
            v[1][i]=i+el%2;
        pred=el;
        el+=n;
        for(i=2;i<n;i++)
        {
            j=1;
            if(pred%2)
                v[i][j++]=v[i-1][k]-k+(1-n%2);
            for(;j<=n;j++)
                v[i][j]=(i-1)*n+j+el%2;
            pred=el;
            el+=n;
        }
        j=1;
        if(pred%2)
            v[n][j++]=v[n-1][k]-k+1-n%2;
        if((n%2==1||n%2==0)&&k%2==1){
        v[n][j++]=v[n-1][n];
        v[n-1][n]=n*n;
        }
        else if(n%2==1&&k%2==0) v[n][j++]=v[n-1][n]+1;
        for(;j<=n;j++)
            v[n][j]=v[n][j-1]+1;
        v[2][1]-=(1-n%2);
        for(i=1;i<=n;i++){
            for(j=1;j<=n;j++)
                printf("%d ", v[i][j]);
            printf("\n");
        }
    }
    return 0;
}