Cod sursa(job #89008)

Utilizator BuniakovskiNeguletu Octavian Buniakovski Data 5 octombrie 2007 11:42:46
Problema Elimin Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 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;
}