Pagini recente » Cod sursa (job #2303424) | Cod sursa (job #454378) | Cod sursa (job #2343434) | Cod sursa (job #2716912) | Cod sursa (job #51580)
Cod sursa(job #51580)
#include<stdio.h>
int N, M, A[17][17], F[33];
long S=-16000000;
int calc ()
{
int x=0;
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
x+=A[i][j];
return x;
}
void flip (int y)
{
if(y<=N)
for(int i=1;i<=M;i++)
A[y][i]=-A[y][i];
else
for(int i=1;i<=N;i++)
A[i][y-N]=-A[i][y-N];
}
void flp()
{
for(int j=1;j<=M;j++)
{
int s=0;
for(int l=1;l<=N;l++)
s+=A[l][j];
if(s<0)
flip(N+j);
}
}
void back (int k)
{
int s=calc();
if(s>S)
S=s;
if(k<=N+M)
{
for(int i=0;i<=1;i++)
{
if (!i)
{
if(k>5)
s++;
flip(k);
F[k]=1;
}
if(F[3]==1 && F[7]==1)
s++;
//flp();
back(k+1);
if (!i)
{
flip(k);
F[k]=0;
}
}
}
}
void citire ()
{
FILE *in = fopen ("flip.in", "rt");
fscanf (in, "%d %d", &N, &M);
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
fscanf (in, "%d ", &A[i][j]);
fclose(in);
}
void afisare ()
{
FILE *out = fopen ("flip.out", "wt");
fprintf(out, "%ld", S);
fclose(out);
}
int main ()
{
citire ();
back(1);
afisare();
return 0;
}