Pagini recente » Cod sursa (job #2430079) | Cod sursa (job #2139982) | Cod sursa (job #2175664) | Cod sursa (job #674071) | Cod sursa (job #3120935)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("elimin.in");
ofstream fout ("elimin.out");
const int Nmax=85;
int n, m, l, c;
int mat[7294][7294], pc[7294], sol;
bool vl[Nmax];
void comb(int niv, int crt){
if (niv!=l){
for (int i=crt; i<n; i++){ //optimizare cazuri in care stim sigur ca nu intra
vl[i]=1;
comb(niv+1, i+1);
vl[i]=0;
}
}
else{
int sum=0;
for (int j=0; j<m; j++){
pc[j]=0;
for (int i=0; i<n; i++){
if (!vl[i])
pc[j]+=mat[i][j];
}
sum+=pc[j];
}
sort(pc, pc+m);
for (int i=0; i<c; i++)
sum-=pc[i];
if (sum>sol)
sol=sum;
}
}
int main()
{
fin>>n>>m>>l>>c;
if (n<m){
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
fin>>mat[i][j];
}
else{
swap(n, m); swap(l, c);
for (int j=0; j<m; j++)
for (int i=0; i<n; i++)
fin>>mat[i][j];
}
comb(0, 0);
fout<<sol;
return 0;
}