Cod sursa(job #697956)

Utilizator iarbaCrestez Paul iarba Data 29 februarie 2012 11:46:48
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
long c[18],l[18],a[17][17],s,max;
int i,j,m,n,p;
FILE *f,*g;
int main()
{
	f=fopen("flip.in","r");
	g=fopen("flip.out","w");
	fscanf(f,"%d%d",&n,&m);
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			fscanf(f,"%d",&a[i][j]);
			c[j]+=a[i][j];l[i]+=a[i][j];
		                 }
	                 }
	do{
	max=0;
	for(i=1;i<=17;i++){
		if(c[i]<max){max=c[i];p=100+i;}//100=c=coloana
		if(l[i]<max){max=l[i];p=200+i;}//200=l=linie
	                  }
	if(max==0){p=300;}//300=0=iesire
	else{
		if(p/100==1){//coloana
			p=p%100;c[p]=0;
			for(i=1;i<=n;i++){
				l[i]-=a[i][p];
				a[i][p]*=-1;
				l[i]+=a[i][p];
				c[p]+=a[i][p];
			                 }
		            }
		if(p/100==2){//linie
			p=p%100;l[p]=0;
			for(i=1;i<=m;i++){
				c[i]-=a[p][i];
				a[p][i]*=-1;
				c[i]+=a[p][i];
				l[p]+=a[p][i];
			                 }
		            }
	    }
	}while(p-300);
	for(i=1;i<=17;i++){s+=l[i];}
	fprintf(g,"%d\n",s);
return 0;
}