Pagini recente » Cod sursa (job #2304867) | Cod sursa (job #2276000) | Cod sursa (job #360666) | Cod sursa (job #974959) | Cod sursa (job #89143)
Cod sursa(job #89143)
#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 ;
int row;
} ;
struct pnod *pmax,*umax,*pmin,*umin;
int suma ;
int mat[100][100];
void max_pe_linii(int k,int i)
{
struct pnod *nou;
struct pnod *q;
if (pmax==NULL )
{
pmax=(struct pnod *)
malloc(sizeof(struct pnod));
pmax->info=k;
pmax->row=i;
umax=pmax;
}
else
if (k>=pmax->info)
{
nou=(struct pnod *)
malloc(sizeof(struct pnod));
nou->adr=pmax;
nou->info=k;
nou->row=i;
pmax=nou;
}
else
if (k<=umax->info)
{
nou=(struct pnod *)
malloc(sizeof(struct pnod));
umax->adr=nou;
nou->adr=NULL;
nou->info=k;
nou->row=i;
umax=nou;
umax->adr=NULL;
}
else
{
q=pmax;
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;
nou->row=i;
}
}
void min_pe_coloane(int k)
{
struct pnod *nou;
struct pnod *q;
if (pmin==NULL )
{
pmin=(struct pnod *)
malloc(sizeof(struct pnod));
pmin->info=k;
umin=pmin;
}
else
if (k<=pmin->info)
{
nou=(struct pnod *)
malloc(sizeof(struct pnod));
nou->adr=pmin;
nou->info=k;
pmin=nou;
}
else
if (k>=umin->info)
{
nou=(struct pnod *)
malloc(sizeof(struct pnod));
umin->adr=nou;
nou->adr=NULL;
nou->info=k;
umin=nou;
umin->adr=NULL;
}
else
{
q=pmin;
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,i,j,s;
struct pnod *t;
fscanf(f,"%d %d %d %d\n",&M,&N,&R,&C);
for (i=1;i<=N;i++)
{
s=0;
for (j=1;j<=M;j++)
{
fscanf(f," %d ",&mat[i][j]);
s+=mat[i][j];
}
fscanf(f,"\n");
max_pe_linii(s,i);
}
suma=0;
t=pmax;
for (i=1;i<=N-R;i++)
{
suma+=t->info;
t=t->adr;
}
while (t!=NULL)
{
for (j=1;j<=M;j++)
mat[t->row][j]=0;
t=t->adr;
}
for (j=1;j<=M;j++)
{
s=0;
for (i=1;i<=N;i++)
s+=mat[i][j];
min_pe_coloane(s);
}
s=0;
t=pmin;
for (j=1;j<=C;j++)
{
s+=t->info;
t=t->adr;
}
suma-=s;
fprintf(g," %d ",suma);
fclose(g);
return 0;
}