Cod sursa(job #1305583)

Utilizator sirbu11Sirbu Claudiu Cosmin sirbu11 Data 29 decembrie 2014 21:59:23
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<stdio.h>

int st[100],k,i,j,n,m,as,ev;
long long int max=-32000001,a[100][100],s;

FILE *f=fopen("flip.in","r");
FILE *g=fopen("flip.out","w");

void init(void)
{
 st[k]=-2;
}

void succesor()
{
	if (st[k]<0&&k<=m+n) 
	{
	    st[k]++;
		as=1;
    }
    else 
	    as=0;
}

void valid(void)
{
	ev=1;
}

int solutie(int k)
{
	if(k==(m+n))
	    return 1;
	 else
		return 0;
}

int main()
{
   
   fscanf(f,"%d%d",&m,&n);
   for(i=1;i<=m;i++)
	   for(j=1;j<=n;j++)
		   fscanf(f,"%lld",&a[i][j]);
   k=1;
   init();
   while(k>0) 
   {
        do
        {
            succesor();
            if (as)
                valid();
        }
        while ((as) && (!as || !ev));
		if (as)
        {
	         if (solutie(k)) 
		     {
				 s=0;
			     for(i=1;i<=m;i++)
				    for(j=1;j<=n;j++)
					   if((st[i]==-1&&st[m+j]==0)||(st[i]==0&&st[m+j]==-1))
						   s=s-a[i][j];
					   else
						   s=s+a[i][j];
				 if(s>max)
					 max=s;
	         }
		 else 
			 {
	             k++;
	             init();
	         }
        }
    else 
	    {
			k--;
		}
   }
fprintf(g,"%lld",max);
return 0;
}