Cod sursa(job #358584)

Utilizator andreea_alexAndreea Alexandru andreea_alex Data 23 octombrie 2009 20:06:04
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>

int N,M,a[20][20];
int max,sol1[20],sol2[20];
 
void citire();
void bkt1(int);
void bkt2(int);
void pupu();
 
int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    citire();
    bkt1(1);
    printf("%d ", max);
    return 0;
}
 
void citire()
{
    scanf("%d%d ", &N,&M);
    for(int i=1;i<=N;++i)
        for(int j=1;j<=M;++j)
            scanf("%d ",&a[i][j]);
}
 
void bkt1(int p)
{
    if(p==N+1)
    {
        bkt2(1);
        return;
    }
    sol1[p]=-1;
    bkt1(p+1);
    sol1[p]=1;
    bkt1(p+1);
}
 
void pupu()
{
    int s=0;
    for(int i=1;i<=N;++i)
        for(int j=1;j<=M;++j)
		{
			if(sol1[i]==sol2[j])
				s+=a[i][j]*sol1[i]*sol2[j];
			if(sol1[i]!=sol2[j])
				s+=a[i][j]*sol1[i]*sol2[j];
		}
     
    if(s>max)
        max=s;
}
 
void bkt2(int p)
{
    if(p==M+1)
    {
        pupu();
        return;
    }
    sol2[p]=-1;
    bkt2(p+1);
    sol2[p]=1;
    bkt2(p+1);
}