Cod sursa(job #1883998)

Utilizator rares1012Rares Cautis rares1012 Data 18 februarie 2017 13:10:52
Problema Tablete Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 2.15 kb
#include <stdio.h>
#include <stdlib.h>

int m[1000][1000];

int main()
{
    int n,k,nr=1,i,j;
    FILE*fi,*fo;
    fi=fopen("tablete.in","r");
    fo=fopen("tablete.out","w");
    fscanf(fi,"%d%d",&n,&k);
    k--;
    if(n%2==0){
    for(i=0; i<n;i=i+2)
        for(j=0; j<n; j++)
        {
            if(j+1==k)
            {
                m[i][j]=nr;
                m[i+1][j]=nr+2;
                nr++;
            }
            else if(j==k)
            {
                m[i][j]=nr;
                m[i+1][j]=nr+2;
                nr+=3;
            }
            else
            {
                m[i][j]=nr;
                m[i+1][j]=nr+1;
                nr+=2;
            }
        }}
    else if(k%2==1) {
        for(i=0;i<n;i++){
            m[0][i]=nr;
            nr++;
        }
        for(i=1; i<n;i=i+2)
        for(j=0; j<n; j++)
        {
            if(j-1==k)
            {
                m[i][j]=nr;
                m[i+1][j]=nr+2;
                nr+=3;
            }
            else if(j==k)
            {
                m[i][j]=nr;
                m[i+1][j]=nr+2;
                nr+=1;
            }
            else
            {
                m[i][j]=nr;
                m[i+1][j]=nr+1;
                nr+=2;
            }
        }
    }
    else {
        nr=n*(n-1);
        for(i=0;i<n;i++){
            m[0][i]=nr;
            nr++;
        }
        nr=1;
        for(i=1; i<n;i=i+2)
        for(j=0; j<n; j++)
        {
            if(i==n-2 && j==n-1)
                {
                    m[i][j]=nr;
                    m[i+1][j]=n*n;
                }
            else if(j+1==k)
            {
                m[i][j]=nr;
                m[i+1][j]=nr+2;
                nr++;
            }
            else if(j==k)
            {
                m[i][j]=nr;
                m[i+1][j]=nr+2;
                nr+=3;
            }
            else
            {
                m[i][j]=nr;
                m[i+1][j]=nr+1;
                nr+=2;
            }
        }
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
            fprintf(fo,"%d ",m[i][j]);
        fprintf(fo,"\n");
    }
    fclose(fi);
    fclose(fo);
    return 0;
}