Pagini recente » Cod sursa (job #1206652) | Cod sursa (job #1279494) | Cod sursa (job #2111617) | Cod sursa (job #2840249) | Cod sursa (job #1161124)
/*
Jocul Flip - Infoarena
*/
#include<iostream>
#include<cstdio>
using namespace std;
long int matrice[17][17], N, M, sPrecedent;
void citire(int r,int c)
{
cin>>matrice[r][c];
if(c<M) citire(r,c+1);
else if(r<N) citire(r+1,1);
}
void verif(char m, int x)
{
long int s = 0;
for(int r=1; r<=N; r++)
{
for(int c=1;c<=M;c++)
s+=matrice[r][c];
}
if(s < sPrecedent)
{
if(m=='c')
{
for(int i=1;i<=N;i++) matrice[i][x]*=-1;
}
if(m=='r')
{
for(int i=1;i<=M;i++) matrice[x][i]*=-1;
}
}
else sPrecedent = s;
}
void flip(char m, int x)
{
if(m=='c' && x<=M)
{
for(int i=1; i<=N; i++) matrice[i][x]*=-1;
verif(m,x);
if(x<M) flip(m,x+1);
else flip('r',1);
}
if(m=='r' && x<N)
{
for(int i=1; i<=M; i++) matrice[x][i]*=-1;
verif(m,x);
flip(m,x+1);
}
}
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
cin>>N>>M;
citire(1,1);
long int s = 0;
for(int r=1; r<=N; r++)
{
for(int c=1;c<=M;c++)
s+=matrice[r][c];
}
sPrecedent = s;
flip('c',1);
s = 0;
for(int r=1; r<=N; r++)
{
for(int c=1;c<=M;c++)
s+=matrice[r][c];
}
cout<<s;
}