Pagini recente » Cod sursa (job #2175801) | Cod sursa (job #2199496) | Cod sursa (job #978498) | Cod sursa (job #3265888) | Cod sursa (job #567115)
Cod sursa(job #567115)
# include <fstream>
# include <cstring>
# include <algorithm>
using namespace std;
int n, m, r, c, i, j;
short a[1100][1100];
long long sol, s[1100], x[1100];
void solve () {
int sum = 0;
for ( i = 1; i <= n; ++i )
for ( j = 1; j <= m; ++j )
s[j] += a[i][j] * ( !x[i] );
sort ( s + 1, s + m + 1 );
for ( i = m; i > c; --i ) sum += s[i];
if ( sum > sol ) sol = sum;
memset ( s, 0, sizeof s );
}
int check () {
int nr = 0;
for ( int i = 1; i <= n; ++i )
nr += x[i];
return ( nr == r );
}
void back () {
int k = 1;
x[1] = -1;
do {
while ( x[k] < 1 ) {
++x[k];
if ( k == n ) {
if ( check () ) solve ();
}
else x[++k] = -1;
}
--k;
} while ( k );
}
int main () {
ifstream f ( "elimin.in" );
ofstream g ( "elimin.out");
f >> n >> m >> r >> c;
if ( n <= m ) {
for ( i = 1; i <= n; ++i )
for ( j = 1; j <= m; ++j )
f >> a[i][j];
}
else {
for ( i = 1; i <= n; ++i )
for ( j = 1 ; j <= m; ++j )
f >> a[i][j];
n ^= m ^= n ^= m;
r ^= c ^= r ^= c;
}
back ();
g << sol << '\n';
g.close ();
return 0;
}