Pagini recente » Cod sursa (job #2488120) | Cod sursa (job #1011648) | Cod sursa (job #2549062) | Cod sursa (job #2683779) | Cod sursa (job #1145648)
#include<fstream>
#include<algorithm>
#define NMAX 1010
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
int n, m, R, C, mx=0, a[NMAX][NMAX], b[NMAX][20], suml[NMAX], x[20];
void Transpune()
{
int i, j;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
{
b[j][i]=a[i][j];
a[i][j]=0;
}
swap(m, n); swap(R, C);
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
a[i][j]=b[i][j];
}
void Citeste()
{
int i, j;
f>>n>>m>>R>>C;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j) f>>a[i][j];
if (n<m) Transpune();
}
void Vezi()
{
int i, j, p=1, sum=0;
for (i=1; i<=n; ++i) suml[i]=0;
for (j=1; j<=m; ++j)
if (j==x[p]) ++p;
else
{
for(i=1; i<=n; ++i)
suml[i]=suml[i]+a[i][j];
}
sort(suml+1, suml+n+1);
for (i=R+1; i<=n; ++i) sum+=suml[i];
mx=max(sum, mx);
}
void Back(int h)
{
int i;
if (h==C+1) Vezi();
else
for (i=x[h-1]+1; i<=n-R+h; ++i)
{
x[h]=i;
Back(h+1);
}
}
int main()
{
Citeste();
Back(1);
g<<mx<<"\n";
f.close();
g.close();
return 0;
}