Cod sursa(job #1603239)

Utilizator Balescu_OvidiuBalescu Ovidiu-Gheorghe Balescu_Ovidiu Data 17 februarie 2016 12:18:14
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>
#include <stdlib.h>

short n,m; bool gasit;
long max=0,a[16][16],line[16],col[16];

int main(){
    FILE*f=fopen("flip.in","r");
    FILE*g=fopen("flip.out","w");
    fscanf(f,"%hd %hd",&n,&m);
    for(short i=0;i<n;i++){
        for(short j=0;j<m;j++){
            fscanf(f,"%ld",&a[i][j]);
            line[i]+=a[i][j];
            col[j]+=a[i][j];
        }
		max+=line[i];
	}
	do{
		gasit=0;
		for(short i=0;i<m;i++)
			if(max-2*col[i]>max){
				max-=2*col[i];
				col[i]*=-1;
				gasit=1;
				for(short j=0;j<n;j++){
					line[j]-=a[j][i];
					a[j][i]*=-1;
					line[j]+=a[j][i];
				}
			}
		for(short i=0;i<n;i++)
			if(max-2*line[i]>max){
				max-=2*line[i];
				line[i]*=-1;
				gasit=1;
				for(short j=0;j<m;j++){
					col[j]-=a[i][j];
					a[i][j]*=-1;
					col[j]+=a[i][j];
				}
			}
	}while(gasit);
    fprintf(g,"%ld",max);
    fclose(f);
    fclose(g);
    return 0;
}