Cod sursa(job #232124)

Utilizator NapsterBardas Alexandru Napster Data 14 decembrie 2008 19:27:44
Problema Tablete Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <stdio.h>
#include <stdlib.h>

void print(FILE *f, long **a, int n)   {
     int i,j;
     for (i=0; i<n; i++) {
         for (j=0; j<n; j++)
             fprintf(f,"%ld ",a[i][j]);
             fprintf(f,"\n");
         }
     }

int main()        {
    int n,k;
    FILE *f;
    f = fopen("tablete.in","r");
    fscanf(f,"%d %d",&n,&k);
    fclose(f);
    long **a=(long**)malloc(n*sizeof(long*));
    int i, j;
    for (i=0; i<n; i++)
        a[i]=(long*)malloc(n*sizeof(long));
        
            for (i=0; i<n; i++)
                if (k%2 == 0) a[i][k-1] = k*(i+1);
                else a[i][k-1] = (k-1)*(i+2);  
    long t=1, p=1;
        for (i=0; i<n; i++)
            for (j=0; j<k; j++) {
            if (j == k-1) if (p%2==1) p++;
            a[i][j]=p;
            if ((t < p) && (j!=k-1)) {a[i][j]=t-1;p--;}
            t++;p++;
            }
        
    t=a[n-1][k-1]+1;    
    for (i=0; i<n; i++)  
        for (j=k; j<n; j++)
        a[i][j]=t++;
                    
    f = fopen("tablete.out","w");
    print(f,a,n);
    fclose(f);
    return 0;
}