Cod sursa(job #467678)
#include <stdio.h>
using namespace std;
int a[10001][10001];
int l[10001], c[10001];
int m, n, R, C;
int i, j, k;
int pozitie_l, pozitie_c, pozitie;
long int suma;
int minim (int v[10001], int dim)
{
int z;
int Min = 1000000, poz = 0;
for (z=1; z<=dim; ++z)
if (Min > v[z] && v[z] != -1)
{
Min = v[z];
poz = z;
}
return poz;
}
int main ()
{
FILE *f = fopen ("elimin.in","r");
FILE *g = fopen ("elimin.out","w");
fscanf (f,"%d %d %d %d", &m, &n, &R, &C);
for (i=1; i<=m; ++i)
{
for (j=1; j<=n; ++j)
{
fscanf (f,"%d", &a[i][j]);
c[j] += a[i][j];
l[i] += a[i][j];
}
}
for (k=1; k<=R; ++k)
{
pozitie = minim (l, m);
for (i=1; i<=n; ++i)
c[i] -= a[pozitie][i];
l[pozitie] = -1;
}
for (k=1; k<=C; ++k)
{
pozitie = minim (c, n);
for (i=1; i<=m; ++i)
l[i] -= a[i][pozitie];
c[pozitie] = -1;
}
for (i=1; i<=n; ++i)
if (c[i] != -1)
suma += c[i];
fprintf (g,"%ld", suma);
fclose(g);
fclose(f);
return 0;
}