Cod sursa(job #130354)
Utilizator | Olariu Eduard Iuliu eddie | Data | 31 ianuarie 2008 22:01:33 |
---|---|---|---|
Problema | Jocul Flip | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.08 kb |
#include <stdio.h>
#include <math.h>
using namespace std;
long a[16][16],n,m,sum,smax,st[16];
void back(int k)
{
int i,j,s,t;
if (k==m)
{
s=0;
for (i=0;i<n;i++)
{
for (t=j=0;j<m;j++)
if (st[j])
t+=-a[i][j];
else
t+=a[i][j];
s+=t<-t ? -t : t;
}
if (smax<s)
smax=s;
return;
}
st[k]=0;
back(k+1);
st[k]=1;
back(k+1);
}
int main()
{
int i,j;
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%ld %ld",&n,&m);
for (i=0;i<n;i++)
for (j=0;j<m;j++)
scanf("%ld",&a[i][j]);
back(0);
printf("%ld",smax);
return 0;
}