Pagini recente » Cod sursa (job #56990) | Cod sursa (job #311170) | Cod sursa (job #1195939) | Cod sursa (job #2464624) | Cod sursa (job #49725)
Cod sursa(job #49725)
#include <stdio.h>
#include <iostream>
FILE *in = fopen("elimin.in","r"), *out = fopen("elimin.out","w");
int n, m, r, c;
short a[500][500];
short eliminate[500] = {0};
int s = 0;
void read()
{
fscanf(in, "%d %d %d %d", &m, &n, &r, &c);
for ( int i = 1; i <= m; ++i )
for ( int j = 1; j <= n; ++j )
fscanf(in, "%d" , &a[i][j]);
}
void suma()
{
int t = 0;
int b[500] = {0};
for ( int i = 1; i <= m; ++i )
for ( int j = 1; j <= n; ++j )
if ( eliminate[j] == 0 )
b[i] += a[i][j];
for ( int i = 1; i < m; ++i )
for ( int j = i+1; j <= m; ++j )
if ( b[i] > b[j] )
{
int q = b[i];
b[i] = b[j];
b[j] = q;
}
for ( int i = r+1; i <= m; ++i )
t += b[i];
if ( t > s )
s = t;
for ( int i = 1; i <= n; ++i )
eliminate[i] = 0;
// for ( int i = 1; i <= m; ++i )
// b[i] = 0;
}
short st[500];
void back(int col)
{
for ( int i = st[col-1]+1; i <= n; ++i )
{
st[col] = i;
if ( col == c )
{
for ( int t = 1; t <= c; ++t )
eliminate[st[t]] = 1;
suma();
}
else
back(col+1);
}
}
int main()
{
read();
memset(st, 0, sizeof(st));
back(1);
fprintf(out, "%d\n", s);
return 0;
}