Cod sursa(job #1176444)

Utilizator cipriancxFMI - gr143 Timofte Ciprian cipriancx Data 26 aprilie 2014 08:28:35
Problema Jocul Flip Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <cstdio>

using namespace std;

long int smax=0,n,m,v[17][17],col[17];
int tije[17];

void afisare();
void generare(int k);
void baga_tije(int k);
void scoate_tije(int k);
int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out", "w", stdout);

//citim matricea
cin>>n>>m;


for(int i=1; i<=n; i++)
    for(int j=1; j<=m; j++)cin>>v[i][j],col[j]+=v[i][j];
generare(1);

cout<<smax;
    return 0;
}

void afisare()
{
    for(int j=1; j<=m; j++)if(tije[j])baga_tije(j);
//calculam maximul
long int spart=0;
for(int jj=1; jj<=m; jj++){if(col[jj] >= 0)spart+=col[jj]; else {spart-=col[jj];}}
if(spart > smax)smax=spart;
//scoatem tije
 for(int j=1; j<=m; j++)if(tije[j])scoate_tije(j);
}

void generare(int k){
if(k<=16){
for(int i=0; i<2; i++){tije[k]=i; generare(k+1);}
}
if(k==17) afisare();

}

void baga_tije(int k){
for(int ii=1; ii<=m; ii++) col[ii]-=(2*v[k][ii]);
}

void scoate_tije(int k){
for(int ii=1; ii<=m; ii++) col[ii]+=(2*v[k][ii]);
}