Cod sursa(job #57097)

Utilizator FlorianFlorian Marcu Florian Data 1 mai 2007 10:01:28
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
long st[17],n,k,m,a[17][17],s[17],sc[17],smax,totsum=0;
FILE*g=fopen("flip.out","w");
void initializari()
	{
	int i,j;
	FILE*f=fopen("flip.in","r");
	fscanf(f,"%ld %ld",&n,&m);
	for(i=1;i<=n;i++)
		{
		for(j=1;j<=m;j++)
			{
			fscanf(f,"%ld",&a[i][j]);
			totsum+=a[i][j];
			s[i]+=a[i][j];
			sc[j]+=a[i][j];}       }
	}
void check(long p)
	{
	long sum,i,j;
	sum=totsum;
	for(i=1;i<=p;i++)
	       {
		sum-=2*sc[st[i]];
		}
	if(sum>smax) smax=sum;
	}
int valid(long p)
	{
	if(p>1&&st[p]<=st[p-1]) return 0;
	else return 1;
	}

void bkt(long p)
	{
	long pval;
	for(pval=1;pval<=m;pval++)
		{
		st[p]=pval;
		if (valid(p))
			{
			if (p==k) check(p);
			else bkt(p+1);
			}
		}
	}
int main()
	{
	initializari();
	 k=1;
	 while(k<=m)
		{
		bkt(1);
		k++;}
		fprintf(g,"%ld",smax);
	}