Cod sursa(job #2232352)

Utilizator YenmaRosu Cristian Yenma Data 18 august 2018 19:26:57
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
//============================================================================
// Name        : JoculFlip.cpp
// Author      : Cristi Rosu
// Version     :
// Copyright   : All rights reserved to Cristi Rosu
// Description : Jocul Flip in C++, Ansi-style
//============================================================================

#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");

int a[20][20], b[20][20], n, m, i, j, k, t;
int s1=0, s2=0, min1=1000000, min2=1000000;

void afisare(int v[20][20]){
	for(i=1; i<=n; i++){
		for(j=1; j<=m; j++)
			g<<v[i][j]<<" ";
		g<<endl;
	}
}

int suma_matrice(int v[20][20]){
	int suma=0;
	for(i=1; i<=n; i++)
		for(j=1; j<=m; j++)
			suma+=v[i][j];
	return suma;
}

void flip(int v[20][20]){
	for(i=1; i<=n; i++){
		for(j=1; j<=m; j++)
			s1+=v[i][j];
		if(s1<min1){
			min1=s1;
			k=i;
		}
		s1=0;
	}
	for(i=1; i<=m; i++)
		v[k][i]*=(-1);

	for(i=1; i<=m; i++){
			for(j=1; j<=n; j++)
				s2+=v[j][i];
			if(s2<min2){
				min2=s2;
				t=i;
			}
			s2=0;
		}
		for(i=1; i<=n; i++)
			v[i][t]*=(-1);
}

int main() {
	int var1=0, var2=1;
	f>>n>>m;
	for(i=1; i<=n; i++)
		for(j=1; j<=m; j++){
			f>>a[i][j];
			b[i][j]=a[i][j];
		}
	while(var1<var2){
		flip(a);
		var1=suma_matrice(a);
		flip(a);
		var2=suma_matrice(a);
	}
	g<<var1;
	return 0;
}