Mai intai trebuie sa te autentifici.
Cod sursa(job #328897)
Utilizator | Data | 3 iulie 2009 18:24:39 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.11 kb |
#include <stdio.h>
#include <math.h>
void init();
void back();
bool exista();
bool solutie();
void prelucreaza(int b[16][16]);
int m,n,k,i,j,s,t;
int a[16][16];
int st[16];
int r[16];
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%d %d",&n,&m);
for (i = 0;i<n;i++)
{
for (j = 0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
s = -sizeof(int);
back();
printf("%d",s);
}
void back()
{
k = 1;
init();
while (k>0)
{
if (exista())
{
if (solutie())
{
prelucreaza(a);
}
else
{
k++;
init();
}
}
else
{
k--;
}
}
}
void init()
{
st[k-1] = 3;
}
bool exista()
{
if ((k<=n) && (st[k-1]>-1))
{
st[k-1]-=2;
return true;
}
return false;
}
bool solutie()
{
return (k == n);
}
void prelucreaza(int b[16][16])
{
t = 0;
for (i=0;i<m;i++)
{
r[i] = 0;
}
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
b[i][j] *= st[i];
r[j] +=b[i][j];
}
}
for (i=0;i<m;i++)
{
t+=fabs((double)r[i]);
}
if (t>s)
{
s = t;
}
}