Pagini recente » Cod sursa (job #2517544) | Cod sursa (job #1774147) | Cod sursa (job #1697192) | Cod sursa (job #2216043) | Cod sursa (job #2561179)
#include <vector>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
const int NMAX = 8e3 ;
vector < int > a [ NMAX + 5 ] ;
int n , m , r , c , ans , v [ NMAX + 5 ] ;
int config [ 20 ] ;
int getans ( void )
{
int i , j , val = 0 ;
for ( j = 1 ; j <= m ; ++ j )
v [ j ] = 0 ;
for ( i = 1 ; i <= n ; ++ i )
if ( ! config [ i ] )
for ( j = 1 ; j <= m ; ++ j )
v [ j ] += a [ i ] [ j ] ;
sort ( v + 1 , v + m + 1 ) ;
for ( j = c + 1 ; j <= m ; ++ j )
val += v [ j ] ;
return val ;
}
int main()
{
ifstream in ( "elimin.in" ) ;
ofstream out ( "elimin.out" ) ;
int i , j , nr ;
in >> n >> m >> r >> c ;
if ( n < m )
{
for ( i = 1 ; i <= n ; ++ i )
a [ i ].assign ( m + 5 , 0 ) ;
for ( i = 1 ; i <= n ; ++ i )
for ( j = 1 ; j <= m ; ++ j )
in >> a [ i ] [ j ] ;
}
else
{
for ( i = 1 ; i <= m ; ++ i )
a [ i ].assign ( n + 5 , 0 ) ;
for ( i = 1 ; i <= n ; ++ i )
for ( j = 1 ; j <= m ; ++ j )
in >> a [ j ] [ i ] ;
swap ( n , m ) ;
swap ( r , c ) ;
}
for ( i = 0 ; i <= ( 1 << n ) ; ++ i )
{
nr = 0 ;
for ( j = 0 ; j < n ; ++ j )
if ( i & ( 1 << j ) )
++ nr ;
if ( nr == r )
{
for ( j = 0 ; j < n ; ++ j )
config [ j + 1 ] = ( i & ( 1 << j ) ) ;
ans = max ( ans , getans () ) ;
}
}
out << ans ;
return 0;
}