Cod sursa(job #1889411)

Utilizator VasilescuVasilescu Eliza Vasilescu Data 22 februarie 2017 18:32:20
Problema Tablete Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <cstdio>

using namespace std;

int a[1001][1001];

int main(){
    FILE *fin, *fout;
    fin=fopen("tablete.in", "r");
    fout=fopen("tablete.out", "w");

    int n, k, i, j, nr, retin, schimb, impar, par, cont;

    fscanf(fin, "%d%d", &n, &k);

    if((k-1)*n%2==0){
        retin=1;
    }
    nr=1;
    schimb=0;
    cont=0;
    for(j=1; j<=n; j++){
        cont=0;
        for(i=1; i<=n; i++){
            if(j<k)
                a[i][j]=nr, nr++;
            if(j==k-1 && retin==1)
                schimb=a[n][j], a[n][j]++, impar=schimb+3;
            if(j==k){
                if(schimb!=0)
                    a[1][j]=schimb, par=schimb+2, schimb=0;
                if(a[i][j]==0){
                    a[i][j]=par;
                    par+=2;
                }
            }
            if(j==k+1){
                a[i][j]+=impar;
                impar+=2;
                cont++;
            }
            if(cont==n-1)
                a[n][j]--;
            if(j>k+1){
                if(i==1)
                    nr=a[n][k+1]+1;
                a[i][j]=nr;
                nr++;
            }
        }
    }

    for(i=1; i<=n; i++){
        for(j=1; j<=n; j++){
            fprintf(fout, "%d ", a[i][j]);
        }
        fprintf(fout, "\n");
    }
    return 0;
}