Pagini recente » Cod sursa (job #1013203) | Cod sursa (job #1340422) | Cod sursa (job #2587760) | Cod sursa (job #1620094) | Cod sursa (job #2277378)
#include <fstream>
#include <iostream>
#include <math.h>
#include <bitset>
using namespace std;
ifstream fin ("elimin.in");
ofstream fout ("elimin.out");
int m, n, r, c, aux[7295][7295], x[7295][7295];
unsigned long long suma(unsigned long long sub_lin, unsigned long long sub_col)
{
int i, j, k, s = 0;
for (i = 1; i<= n; i++)
for (j = 1; j<= m; j++)
aux[i][j] = x[i][j];
for (j = 0; j<n; j++)
if (((sub_lin >> j) & 1) != 0)
for (i=1; i<=n; i++)
aux[j+1][i] = 0;
for (k = 0; k<m; k++)
if (((sub_col >> k) & 1) != 0)
for (i=1; i<=m; i++)
aux[i][k+1] = 0;
for (i = 1; i<= n; i++)
for(j = 1; j<= m; j++)
s += aux[i][j];
return s;
}
int main()
{
unsigned long long i, j, submult_lin, submult_col, counter, l, k, s_max=0, s;
fin >> n >> m >> r >> c;
for (i = 1; i<= n; i++)
for(j = 1; j<= m; j++)
fin >> x[i][j];
submult_lin = (1<<n)-1;
submult_col = (1<<m) -1;
for (i = 1; i<=submult_lin; i++)
{
counter = 0;
for (j = 0; j<n; j++)
if (((i >> j) & 1) != 0)
counter++;
if (counter == r)
{
for (l = 1; l<=submult_col; l++)
{
counter = 0;
for(k = 0; k<m; k++)
if (((l >> k) & 1) != 0)
counter++;
if (counter==c)
{
s = suma(i,l);
if (s > s_max)
s_max = s;
}
}
}
}
fout << s_max;
return 0;
}