Cod sursa(job #362944)

Utilizator dany123Florea Daniel dany123 Data 11 noiembrie 2009 13:07:33
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");

int n,m,a[20][20],slin[20],scol[20];

int s_l (int n, int inv) {	//n = nr linie	//suma_linie
	int s=0;
	if (inv==1) inv=-1; else inv=1;
	for (int i=0;i<m;i++) s+=(a[n][i]*inv);
	return s;}

int s_c (int m, int inv) {	//m = nr coloana	//suma_coloana
	int s=0;
	if (inv==1) inv =-1; else inv=1;
	for (int i=0;i<n;i++) s+=(a[i][m]*inv);
	return s;}

void l_inv (int n) {for (int j=0;j<m;j++) a[n][j]*=-1;}
void c_inv (int m) {for (int i=0;i<n;i++) a[i][m]*=-1;}

int main () {
	int i,j,s=0;
	fin>>n>>m;		
	for (i=0;i<n;i++) for (j=0;j<m;j++)	fin>>a[i][j];		//citesc matricea
	for (i=0;i<n;i++) slin[i]=s_l(i,0);		//slin = suma liniei i
	for (j=0;j<m;j++) scol[j]=s_c(j,0);	
	
	
	for (j=0;j<m;j++) if (s_c(j, 0) < s_c(j, 1)) c_inv(j);	//    -||- coloanei -||-
	for (i=0;i<n;i++) if (s_l(i, 0) < s_l(i, 1)) l_inv(i);	//daca suma liniei inversate e mai mare o inversez //x
	for (i=0;i<n;i++) for (j=0;j<m;j++) s+=a[i][j];		//suma matricei finale;
	fout<<s;
	fin.close(); fout.close();
	return 0;
}