Cod sursa(job #89012)

Utilizator BuniakovskiNeguletu Octavian Buniakovski Data 5 octombrie 2007 11:57:29
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <stdio.h>
#include <alloc.h>

FILE *f=fopen("elimin.in","r");
FILE *g=fopen("elimin.out","w");

struct pnod{
 int info ;
 struct pnod *adr ;
 } ;

struct pnod *p[9000];
struct pnod *u[9000];
int suma ;


void aranjare(int i,int k)
{
  struct pnod *nou;
  struct pnod *q;
if (p[i]==NULL )
   {
   p[i]=(struct pnod *)
   malloc(sizeof(struct pnod));
   p[i]->info=k;
   u[i]=p[i];
   }
else
 if (k>p[i]->info)
   {
   nou=(struct pnod *)
   malloc(sizeof(struct pnod));
   nou->adr=p[i];
   nou->info=k;
   p[i]=nou;
   }
else
 if (k<u[i]->info)
   {
   nou=(struct pnod *)
   malloc(sizeof(struct pnod));
   u[i]->adr=nou;
   nou->adr=NULL;
   nou->info=k;
   u[i]=nou;
   u[i]->adr=NULL;
   }
else
 {
  q=p[i];
  while (k<q->adr->info)
  q=q->adr;
  nou=(struct pnod *)
  malloc(sizeof(struct pnod));
  nou->adr=q->adr;
  q->adr=nou;
  nou->info=k;
  }
}


int main(void){

  int M,N,R,C,k,i,j;
  struct pnod *t;


 fscanf(f,"%d %d %d %d\n",&M,&N,&R,&C);
 for (i=1;i<=N;i++)
  {
  for (j=1;j<=M;j++)
   {
    fscanf(f," %d ",&k);
    aranjare(i,k);
     }
fscanf(f,"\n");
    }

suma=0;

 for (i=1;i<=N-R;i++)
  {
   t=p[i];
   for (j=1;j<=M-C;j++)
    {
     suma=suma+t->info;
     t=t->adr;
      }
   }

fprintf(g," %d ",suma);
fclose(g);
return 0;
}