Cod sursa(job #1675795)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 5 aprilie 2016 16:19:36
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <cstdio>
#define MAXN 1000
int m[MAXN+1][MAXN+1];
int main(){
    int n, k, s, i, j;
    FILE *fin, *fout;
    fin=fopen("tablete.in", "r");
    fout=fopen("tablete.out", "w");
    fscanf(fin, "%d%d", &n, &k);
    if(k%2==0){
        s=0;
        for(i=1; i<=n; i++){
            for(j=1; j<=k; j++){
                s++;
                m[i][j]=s;
            }
        }
        for(i=1; i<=n; i++){
            for(j=k+1; j<=n; j++){
                s++;
                m[i][j]=s;
            }
        }
    }else{
        s=0;
        for(i=1; i+1<=n; i+=2){
            s++;
            m[i][1]=s;
            s++;
            m[i+1][1]=s;
            for(j=2; j<=k; j++){
                s++;
                m[i][j]=s;
            }
            for(j=2; j<=k; j++){
                s++;
                m[i+1][j]=s;
            }
        }
        if(n%2==1){
            s++;
            m[1][k+1]=s;
            for(j=1; j<=k; j++){
                s++;
                m[i][j]=s;
            }
            for(j=k+2; j<=n; j++){
                s++;
                m[1][j]=s;
            }
        }else{
            for(j=k+1; j<=n; j++){
                s++;
                m[1][j]=s;
            }
        }
        for(i=2; i<=n; i++){
            for(j=k+1; j<=n; j++){
                s++;
                m[i][j]=s;
            }
        }
    }
    for(i=1; i<=n; i++){
        for(j=1; j<n; j++){
            fprintf(fout, "%d ", m[i][j]);
        }
        fprintf(fout, "%d\n", m[i][n]);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}