Cod sursa(job #2098697)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 3 ianuarie 2018 13:45:42
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <cstdio>

using namespace std;
int a[1001][1001],f[1000001];
int main()
{
    FILE *fin=fopen ("tablete.in","r");
    FILE *fout=fopen ("tablete.out","w");
    int n,k,i,j,pe;
    fscanf (fin,"%d%d",&n,&k);
    pe=k*n+1;
    if (pe%2==1){
        for (j=k+1;j<=n;j++){
            for (i=1;i<=n;i++){
                a[i][j]=pe;
                f[pe]=1;
                pe++;
            }
        }
        pe=k*n;
        for (i=n;i>0;i--){
            a[i][k]=pe;
            f[pe]=1;
            pe-=2;
        }
        pe=n*k;
        for (j=k-1;j>0;j--){
            for (i=n;i>0;i--){
                while (f[pe])
                    pe--;
                a[i][j]=pe;
                pe--;
            }
        }
    }
    else {
        for (j=k+1;j<=n;j++){
            for (i=1;i<=n;i++){
                a[i][j]=pe;
                f[pe]=1;
                pe++;
            }
        }
        a[1][k+1]=k*n;
        f[k*n]=1;
        pe=n*k+1;
        for (i=n;i>0;i--){
            a[i][k]=pe;
            f[pe]=1;
            pe-=2;
        }
        pe=n*k;
        for (j=k-1;j>0;j--){
            for (i=n;i>0;i--){
                while (f[pe])
                    pe--;
                a[i][j]=pe;
                pe--;
            }
        }
    }
    for (i=1;i<=n;i++){
        for (j=1;j<=n;j++)
            fprintf (fout,"%d ",a[i][j]);
        fprintf (fout,"\n");
    }
    return 0;
}