Cod sursa(job #1013830)

Utilizator krissu93FMI Tiugan Cristiana Elena krissu93 Data 21 octombrie 2013 19:45:28
Problema Elimin Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.55 kb
#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 = 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]+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;


}