Cod sursa(job #532207)

Utilizator cnt_tstcont teste cnt_tst Data 11 februarie 2011 07:43:23
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<stdio.h>
FILE *f=fopen("flip.in", "r");
FILE *g=fopen("flip.out", "w");
int v[17], a[17][17], b[17][17];
int s,sfinal,stotal,i,j,n,m,k,max  ;
int main () {
	fscanf(f, "%d %d", &n, &m);
	for (i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			fscanf(f, "%d",& a[i][j]);
		}
	}
	for (i=1;i<=m;i++){
		v[i]=0;
	}
	for (i=1;i<=n;i++){
		s=0;
		for (j=1;j<=m;j++){
			s=s+a[i][j];
		}
			if (s<0){
				sfinal=-s;
			}
			else {
				sfinal=s;
			}
			stotal=stotal+sfinal;
		
	}
	max=stotal;
	while (v[0]!=1){
		k=m;
		while (v[k]==1){
			v[k]=0;
			k--;
		}
		v[k]=1;
		for(i=1;i<=n;i++){
			for(j=1;j<=m;j++){
				b[i][j]=a[i][j];
			}
		}
	
		for (j=1;j<=m;j++){
			if(v[j]==1){
				for(i=1;i<=n;i++){
				b[i][j]=-b[i][j];
				}
			}
		}	
		stotal=sfinal=s=0;
		for(i=1;i<=n;i++){
			s=0;
			for(j=1;j<=m;j++){
				s=b[i][j]+s;
			}
				if (s<0){
				sfinal=-s;
				}
				else{
					sfinal=s;
				}
				stotal=stotal+sfinal;
		}
		if (stotal>max){
			max=stotal;
		}
	}
	fprintf(g,"%d" ,max);
	fclose(f);
	fclose(g);

return 0;
}