Cod sursa(job #1336711)

Utilizator luciancerbu87Cerbu Lucian luciancerbu87 Data 8 februarie 2015 01:22:26
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.67 kb
#include <fstream>
#include <conio.h>
using namespace std;

void print_array(ofstream& g,int x[16][16],int n,int m)
{
	    g<<n<<" "<<m<<"\n";
	for(int i=0;i<=n+1;i++)
	{
		for(int j=0;j<=m+1;j++)
			g<<x[i][j]<<" ";
		g<<"\n";
	}
} 
void print_sum(ofstream& g,int x[16][16],int n,int m)
{
	int sum=0;
	for(int i=0;i<=n+1;i++)
		for(int j=0;j<=m+1;j++)
			sum=sum+x[i][j];
	g<<sum<<"\n";
} 
void read_array(ifstream& f,int a[16][16],int &n,int &m)
{
	f>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			f>>a[i][j];
}
int invers_line(int a[16][16],int n,int m,int l)
{
	int s=0;
	for (int j=1;j<=m;j++)
	s=s+(-1)*a[l][j];	
	return s;
}
int invers_column(int a[16][16],int n,int m,int c)
{
	int s=0;
	for (int i=1;i<=n;i++)
	s=s+(-1)*a[i][c];	
	return s;
}

int line(int a[16][16],int n,int m,int l)
{
	int s=0;
	for (int j=1;j<=m;j++)
	s=s+a[l][j];	
	return s;
}

int column(int a[16][16],int n,int m,int c)
{
	int s=0;
	for (int i=1;i<=n;i++)
	s=s+a[i][c];	
	return s;
}

int compute(int a[16][16],int n,int m)
{
	int aux=0;
	for (int i=1;i<=n;i++)
	{
		if (line(a,n,m,i)<invers_line(a,n,m,i))
		{
			aux++;
			for (int j=1;j<=m;j++)
				a[i][j]=-1*a[i][j];
		}
	}
	for(int j=1;j<=m;j++)
	{
		if (column(a,n,m,j)<invers_column(a,n,m,j))
		{
			aux++;
			for (int i=1;i<=n;i++)
				a[i][j]=-1*a[i][j];
		}
	}
	return aux;
}


int main()
{
    int n=0,m=0;
	int a[16][16]={0};
    ifstream f("flip.in");
    ofstream g("flip.out");
    read_array(f,a,n,m); 
	//print_sum(g,a,n,m);
	do
	{
	}while (compute(a,n,m));
	//print_array(g,a,n,m);
	print_sum(g,a,n,m);
    f.close();
    g.close();
    return 0;
}