Pagini recente » Cod sursa (job #3032994) | Cod sursa (job #1919327) | Cod sursa (job #2483326) | Cod sursa (job #906926) | Cod sursa (job #120615)
Cod sursa(job #120615)
#include <stdio.h>
#include <algorithm>
using namespace std;
long x[600][600], sum[600], maxim, suma, i, j, n, m, r, c, st[600], aux;
void back(long k, long nr_1)
{
if (k > n) return;
if (nr_1 == c)
{
for (int i = 1; i <= n; i ++)
{
sum[i] = 0;
for (int j = 1; j <= m; j ++)
if (!st[j])
sum[i] += x[i][j];
}
sort(sum + 1, sum + n + 1);
suma = 0;
for (int i = r + 1; i <= n; i ++)
suma += sum[i];
maxim = suma > maxim ? suma : maxim;
}
else
{
st[k] = 1;
back(k + 1, nr_1 + 1);
st[k] = 0;
back(k + 1, nr_1);
}
}
int main()
{
freopen ("elimin.in", "rt", stdin);
freopen ("elimin.out", "wt", stdout);
scanf("%ld %ld %ld %ld", &n, &m, &r, &c);
if (n < m)
{
aux = n;
n = m;
m = aux;
}
for (i = 1; i <= n; i ++)
for (j = 1; j <= m; j ++)
scanf("%ld", &x[i][j]);
back(1, 0);
printf("%ld\n", maxim);
return 0;
}