Pagini recente » Cod sursa (job #3263492) | Cod sursa (job #2928327) | Cod sursa (job #3184008) | Rating Silion Dragos (silidragos) | Cod sursa (job #7797)
Cod sursa(job #7797)
#include <stdio.h>
#include <stdlib.h>
#define infile "elimin.in"
#define outfile "elimin.out"
#define coloana linie
#define cmp_col cmp_lin
struct linie{int pozini,suma;};
FILE *fin,*fout;
inline int cmp_lin(const void *ma, const void *mb)
{
linie a=*((linie *)ma);
linie b=*((linie *)mb);
return -(a.suma<b.suma)+(a.suma>b.suma);
}
int main()
{
int i,j,m,n,r,c;
int sumamax;
fin=fopen(infile,"r");
fout=fopen(outfile,"w");
fscanf(fin,"%d %d %d %d",&m,&n,&r,&c);
int x[m+1][n+1];
char usedlin[m+1];
char usedcol[m+1];
for(i=0;i<m;i++)
usedlin[i]=1;
for(j=0;j<n;j++)
usedcol[j]=1;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
fscanf(fin,"%d",&x[i][j]);
linie A[m+1];
for(i=0;i<m;i++)
{
A[i].pozini=i;
A[i].suma=0;
for(j=0;j<n;j++)
A[i].suma+=x[i][j];
}
qsort(A,m,sizeof(linie),cmp_lin);
for(i=0;i<r;i++)
usedlin[A[i].pozini]=0;
coloana B[n+1];
for(j=0;j<n;j++)
{
B[j].pozini=j;
B[j].suma=0;
for(i=0;i<m;i++)
if(usedlin[i])
B[j].suma+=x[i][j];
}
qsort(B,n,sizeof(coloana),cmp_col);
sumamax=0;
for(i=c;i<n;i++)
sumamax+=B[i].suma;
fprintf(fout,"%d\n",sumamax);
fclose(fin);
fclose(fout);
return 0;
}