Pagini recente » Cod sursa (job #989913) | Cod sursa (job #1583827) | Cod sursa (job #2080457) | Cod sursa (job #3158027) | Cod sursa (job #1843006)
#include <fstream>
#include <algorithm>
using namespace std;
ofstream fout ("elimin.out");
ifstream fin ("elimin.in");
short int v[25][7500];
int i,j,n,m,r,c,vsort[7500],sumafin,vv[25];
void suma();
void genera( int n );
int main()
{
fin>>n>>m>>r>>c;
if( n > m )
{
swap( n , m );
swap( r , c );
for( i = 1 ; i <= m ; i++ )
for( j = 1 ; j <= n ; j++ )
fin>>v[ j ][ i ];
}
else
{
for( i = 1 ; i <= n ; i++ )
for( j = 1 ; j <= m ; j++ )
fin>>v[ i ][ j ];
}
genera( n );
fout<<sumafin;
}
void genera( int n )
{
int cnt = 1 << n;
for( int i = 1 ; i <= cnt ; i++ )
{
int poz = n;
vv[ poz ]++;
while( vv[ poz ] == 2 )
{
vv[ poz-- ] = 0;
vv[ poz ]++;
}
int nr = 0;
for( int j = 1 ; j <= n ; j++ )
nr += vv[ j ];
if( nr == r )
suma();
}
}
void suma()
{
for( int j = 1 ; j <= m ; j++ )
vsort[ j ] = 0;
for( int i = 1 ; i <= n ; i++ )
for( int j = 1 ; j <= m ; j++ )
if( vv[ i ] == 0 )
vsort[ j ] += v[ i ][ j ];
sort( vsort + 1 , vsort + m + 1 );
int sumacrt = 0;
for( int j = c + 1 ; j <= m ; j++ )
sumacrt += vsort[ j ];
sumafin = max( sumafin , sumacrt );
}