Cod sursa(job #348)

Utilizator ZweisteinAdrian VELICU Zweistein Data 11 decembrie 2006 08:03:51
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <stdio.h>
#include <math.h>
	int n,m;
	int a[20][20];
	int c;
	long summax=0;
void Attempt (void) {
	int i,j;
	int sum1,sum2,sumb=0;
	for (i=0; i<m; i++) {
		sum1=0;
		sum2=0;
		for (j=0; j<n; j++) {
			if (c&1<<j) { sum1+=a[j][i]*(-1); } //sum2+=a[j][i]; }
			else { sum1+=a[j][i]; } // sum2+=a[j][i]*(-1); };
		};
		sum2=-sum1;
		sumb+=(sum1>sum2?sum1:sum2);
	};
	summax=(sumb>summax?sumb:summax);
};
int main (void) {
	FILE * fi = fopen("flip.in","rt"); FILE * fo = fopen("flip.out","wt");
	fscanf(fi,"%d %d",&n,&m);
//	long maxsum=0;
	int i,j;
	for (i=0; i<n; i++) {
		for (j=0; j<m; j++) {
			fscanf(fi,"%d",&a[i][j]);
		};
	};
//	for (i=0; i<n; i++) {
//		c[i]=0;
//	};
	for (c=0; c<pow(2,n-1); c++){
		Attempt();
	};
/*	char AllOK=0;
	while (!AllOK) {
		AllOK=0;
		if (c[n-1]==0) { c[n-1]=1; AllOK=0; }
		else if (c[n-1]==1) {
			c[n-1]=0;
			c[n-2]++;
			for (i=n-2; i>0; i--) {
				if (c[i]>1) { c[i]=0; c[i-1]++; };
			};
			if (c[0]>1) AllOK=1;
		};
		if (!AllOK) {
			for (i=0; i<n; i++) {
//				printf("%c",c[i]+1);
			};
//			printf("\n");
		};
		Attempt();
	};*/
	fprintf(fo,"%ld",summax);
	fclose(fi); fclose(fo);
	return 0;
};