Pagini recente » Cod sursa (job #555693) | Cod sursa (job #2258753) | Cod sursa (job #609435) | Cod sursa (job #2497736) | Cod sursa (job #294487)
Cod sursa(job #294487)
#include<fstream.h>
ifstream in("elimin.in");
ofstream out("elimin.out");
int rows[650],columns[650],m,n,r,c,mat[650][650],x,y,min;
int suma()
{ int i,j,s=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s=s+mat[i][j];
return s;
}
void scoate2()
{ int i,j;
min=100000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if((rows[i]+columns[j]-mat[i][j]<min)&&(rows[i]!=-1)&&(columns[j]!=-1))
{ min=rows[i]+columns[j]-mat[i][j];x=i;y=j;}
rows[x]=-1;columns[y]=-1;
for(i=1;i<=m;i++)mat[x][i]=0;
for(i=1;i<=n;i++)mat[i][y]=0;
r--;c--;
}
void scoater()
{ int i,min;
min=100000;
for(i=1;i<=n;i++)
if((rows[i]!=-1)&&(rows[i]<min))
{ min=rows[i];x=i;}
rows[x]=-1;
for(i=1;i<=m;i++)mat[x][i]=0;
r--;
}
void scoatec()
{ int i,min=10000;
for(i=1;i<=m;i++)
if((columns[i]!=-1)&&(columns[i]>min))
{ min=columns[i];y=i;}
columns[i]=-1;
for(i=1;i<=n;i++)mat[i][y]=0;
c--;
}
int main()
{ int i,j;
in>>n>>m>>r>>c;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{ in>>mat[i][j];
rows[i]=rows[i]+mat[i][j];
columns[j]=columns[j]+mat[i][j];
}
while((c>0)&&(r>0))scoate2();
if(c==0)
for(i=1;i<=r;i++)scoater();
if(r==0)
for(i=1;i<=c;i++)scoatec();
/*for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)out<<mat[i][j]<<" ";
out<<"\n";
}*/
out<<suma();
out.close();
return 0;
}