Pagini recente » Cod sursa (job #1321676) | Cod sursa (job #484753) | Cod sursa (job #2304095) | Cod sursa (job #1420830) | Cod sursa (job #2442095)
#include <fstream>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
struct s{
long suma, ord;
};
int a[1001][1001];
void sort(int n, s a[]){
int i, j;
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (a[i].suma>a[j].suma){
swap(a[i].suma, a[j].suma);
swap(a[i].ord, a[j].ord);
}
}
int main()
{
int n, m, i, j, r , q;
long s=0;
struct s l[1001], c[1001];
cin>>n>>m>>r>>q;
for (i=1;i<=n;i++){
for (j=1;j<=m;j++){
cin>>a[i][j];
l[i].suma+=a[i][j];
c[j].suma+=a[i][j];
c[j].ord=j;
s=s+a[i][j];
}
l[i].ord=i;
}
sort(n, l);
sort(m, c);
i=1; j=1;
while (r>0&&q>0){
if (l[i].suma<l[j].suma){
s-=l[i].suma;
for (int k=1;k<=m;k++)
c[k].suma-=a[l[i].ord][k];
i++;
r--;
sort(m,c);
}
else{
s-=c[j].suma;
for (int k=1;k<=n;k++)
l[k].suma-=a[k][c[j].ord];
j++;
q--;
sort(n,l);
}
}
i=1;
while (q>0){
s=s-c[i].suma;
i++;
q--;
}
i=1;
while (r>0){
s=s-l[i].suma;
i++;
r--;
}
cout<<s;
cin.close();
cout.close();
return 0;
}