Pagini recente » Cod sursa (job #2555609) | Cod sursa (job #1311452) | Cod sursa (job #2604931) | Cod sursa (job #620623) | Cod sursa (job #1013833)
#include <fstream>
#include <algorithm>
#define max1 7300
#define max2 18
using namespace std;
int nrLinii, nrColoane, linii, coloane;
int joc[max1][max2],st[max2], sumaLinii[max1], suma[max1];
int Suma = 0;
void getData(){
ifstream in("elimin.in");
in>>nrLinii>>nrColoane>>linii>>coloane;
if (nrLinii >= nrColoane)
for (int counter1 = 1; counter1 <= nrLinii; counter1++)
for (int counter2 = 1; counter2 <= nrColoane; counter2++)
in>>joc[counter1][counter2], sumaLinii[counter1]+=joc[counter1][counter2];
else{
for (int counter1 = 1; counter1 <= nrLinii; counter1++)
for (int counter2 = 1; counter2 <= nrColoane; counter2++)
in>>joc[counter2][counter1], sumaLinii[counter2]+= joc[counter2][counter1];
swap(nrLinii,nrColoane);
swap(linii,coloane);
}
in.close();
}
void solve(int st[]){
for (int counter = 1 ; counter <=nrLinii; ++counter ){
suma[counter] = sumaLinii[counter];
for (int counter2 = 1; counter2 <= coloane;++counter2)
suma[counter] -= joc[counter][ st[ counter2 ]];
}
sort(suma+1, suma+1+nrLinii);
int sol = 0;
for (int counter = linii+1; counter <= nrLinii; ++ counter)
sol+= suma[counter];
if (sol>Suma) Suma = sol;
}
void Back(int k){
if (k== coloane+1) {
solve(st);
return;
}
for (int counter = st[k-1]+1; counter<=nrColoane; ++counter)
{
st[k] = counter;
Back(k+1);
}
}
int main(){
getData();
Back(1);
ofstream out("elimin.out");
out<<Suma<<" ";
out.close();
return 0;
}