Pagini recente » Cod sursa (job #155160) | infolimpiada | Cod sursa (job #901692) | Cod sursa (job #315237) | Cod sursa (job #1013828)
#include <fstream>
#include <algorithm>
#define max1 7310
#define max2 20
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 = 0; counter1 < nrLinii; counter1++)
for (int counter2 = 0; counter2 < nrColoane; counter2++)
in>>joc[counter1][counter2], sumaLinii[counter1]+=joc[counter1][counter2];
else{
for (int counter1 = 0; counter1 < nrLinii; counter1++)
for (int counter2 = 0; 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 = 0 ; counter <nrLinii; ++counter ){
suma[counter] = sumaLinii[counter];
for (int counter2 = 0; counter2 < coloane;++counter2)
suma[counter] -= joc[counter][ st[ counter2 ]];
}
sort(suma, suma+nrLinii);
int sol = 0;
for (int counter = linii; counter < nrLinii; ++ counter)
sol+= suma[counter];
if (sol>Suma) Suma = sol;
}
void Back(int k){
if (k== coloane) {
solve(st);
return;
}
for (int counter = st[k-1]; counter<nrColoane; ++counter)
{
st[k] = counter;
Back(k+1);
}
}
int main(){
getData();
Back(0);
ofstream out("elimin.out");
out<<Suma<<" ";
out.close();
return 0;
}