Pagini recente » Cod sursa (job #42715) | Cod sursa (job #1478688) | Cod sursa (job #1616746) | Cod sursa (job #816542) | Cod sursa (job #836535)
Cod sursa(job #836535)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int N, M, R, C;
int v[1000][100],sum[1000], a[106];
int lin[1006];
int smax = 0 ;
void solve(){
for(int i = 1; i <= N; i++)
lin[i] = sum[i];
for(int i = 1; i <= C; i++)
for(int j = 1; j <= N; j++)
{
lin[j] -= v[j][a[i]];
}
sort(lin + 1, lin + 1 + N);
int S= 0 ;
for(int i = R + 1; i <= N; i++)
S += lin[i];
smax = max (S,smax);
}
void bkt(int l)
{
if(l <= C)
{
for(int i = a[l - 1] + 1; i <= M - l + C; i++ )
{
a[l] = i;
bkt(l + 1);
}
}
else solve();
}
int main(){
fin >>N>>M>>R>>C;
if(N < M){
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
fin >> v[j][i];
}
swap(N,M);
swap(R,C);
}
else
{
for(int i = 1; i <= N; i++)
for(int j = 1; j <=M; j++)
fin >> v[i][j];
}
for(int i = 1; i <= N; i++)
for(int j = 1; j <= M; j++)
sum[i] += v[i][j];
bkt(1);
fout << smax <<'\n';
fin.close();
return 0;
}