Pagini recente » Cod sursa (job #2335433) | Cod sursa (job #2967896) | Cod sursa (job #2534948) | Cod sursa (job #1069518) | Cod sursa (job #1022196)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("elimin.in");
ofstream out("elimin.out");
const int NMAX = 700;
int V[NMAX][NMAX], newS[NMAX], columnSum[NMAX], Value[NMAX];
int N, M, R, C, maxSolution = -1;
void newValue(){
int sol = 0, i, j;
for(j = 1; j <= M; j++){
newS[j] = columnSum[j];
for(i = 1; i <= R; i++){
newS[j] -= V[Value[i]][j];
}
}
sort(newS+1, newS + N + 1);
for(i = C+1; i <= M; i++)
sol += newS[i];
if(sol > maxSolution)
maxSolution = sol;
}
void back(int pos){
if(pos > R){
newValue();
}
else {
for(int i = Value[pos-1] + 1; i <= N; i++){
Value[pos] = i;
back(pos+1);
}
}
}
int main()
{
int i,j;
in >> N >> M >> R >> C;
if( N > M){
for(i = 1; i <= N; i++)
for(j = 1; j <= M; j++){
in >> V[j][i];
columnSum[i] += V[j][i];
}
swap(N,M);
swap(R,C);
}
else for(i = 1; i <= N; i++)
for(j = 1; j <= M; j++){
in >> V[i][j];
columnSum[j] += V[i][j];
}
back(1);
out << maxSolution;
return 0;
}