Pagini recente » Cod sursa (job #2842123) | Cod sursa (job #929263) | Cod sursa (job #2530712) | Cod sursa (job #2254252) | Cod sursa (job #2680599)
#include <stdio.h>
#define MAX_N 15
#define MAX_M 7294
int mat[MAX_N][MAX_M], v[MAX_M];
void sort( int begin, int end ) {
int aux, b, e, p;
b = begin;
e = end;
p = v[(begin + end) / 2];
while ( v[b] < p )
b++;
while ( v[e] > p )
e--;
while ( b < e ) {
aux = v[b];
v[b] = v[e];
v[e] = aux;
do
b++;
while ( v[b] < p );
do
e--;
while ( v[e] > p );
}
if ( begin < e )
sort( begin, e );
if ( e + 1 < end )
sort( e + 1, end );
}
int main() {
FILE *fin, *fout;
int n, m, r, c, maxs, s, a, b1, aux, col, i, j;
fin = fopen( "elimin.in", "r" );
fscanf( fin, "%d%d%d%d", &n, &m, &r, &c );
for ( i = 0; i < n; i++ ) {
for ( j = 0; j < m; j++ ) {
if ( n < m )
fscanf( fin, "%d", &mat[i][j] );
else
fscanf( fin, "%d", &mat[j][i] );
}
}
if ( n < m ) {
aux = n;
n = m;
m = aux;
aux = r;
r = c;
c = aux;
}
fclose( fin );
maxs = 0;
for ( i = 0; i < (1 << n); i++ ) {
a = i;
b1 = 0;
while ( a > 0 ) {
if ( a & 1 )
b1++;
a >>= 1;
}
if ( b1 == r ) {
for( col = 0; col < m; col++ )
v[col] = 0;
for( j = 0; j < n; j++ ) {
if( (i & (1 << j)) == 0 ) {
for( col = 0; col < m; col++ )
v[col] += mat[j][col];
}
}
sort( 0, m - 1 );
s = 0;
for( j = c; j < m; j++ )
s += v[j];
if ( s > maxs )
maxs = s;
}
}
fout = fopen( "elimin.out", "w" );
fprintf( fout, "%d", maxs );
fclose( fout );
return 0;
}