Cod sursa(job #405981)

Utilizator holy_mentsPatrick Ivan holy_ments Data 1 martie 2010 02:44:01
Problema Tablete Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.5 kb
#include<stdio.h>

int main(){
    long *m[1000], *v;
    int z=1,j,N,K,y;
    long i;
    FILE *fp;
    
    fp=fopen("tablete.in", "r");
    fscanf(fp, "%d %d", &N, &K);
    fclose(fp);

    v=malloc((N*N)*sizeof(long));
    for (i=0;i<N;i++){
        m[i]=malloc(N*sizeof(long));
    }

    for (i=1;i<=N*N;i++){v[i]=i;}
    
    if (N%2==0){   
        y=N*(K-1);
    }
    else{
         y=(N-1)*(K-1);
    }
    
    for (i=0;i<N;i++){
        m[i][K-1]=v[y+2*i];
        v[y+2*i]=0;
    }
    
    i=0;
    while (i<N){
          for (j=0;j<K-1;j++){
              if (v[z]!=0){
                 m[i][j]=v[z];
                 v[z]=0;
                 z++;
              }
              else{      
                   z+=1;
                   m[i][j]=v[z];
                   v[z]=0;
                   z++;
              }
          }
          i++;
    }
    
    i=0;
    while (i<N){
          for (j=K;j<N;j++){
              if (v[z]!=0){
                 m[i][j]=v[z];
                 v[z]=0;
                 z++;
              }
              else{      
                   z+=1;
                   m[i][j]=v[z];
                   v[z]=0;
                   z++;
              }
          }
          i++;
    }            
    puts("");
fp = fopen("tablete.out", "w");
  
    for (i=0;i<N;i++){
        for (j=0;j<N;j++){
            fprintf(fp, "%d ", m[i][j]);
        }
        fprintf(fp, "\n");
    }
    fclose(fp);     
}