Cod sursa(job #2381087)

Utilizator aquarius231Zorander aquarius231 Data 15 martie 2019 23:40:40
Problema Jocul Flip Scor 20
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <stdio.h>
#include <stdlib.h>

int suma_linie(int** a, int l, int m)
{
	int suma = 0;
	for(int j = 0; j < m; ++j)
	{
		suma += a[l][j];
	}
	return suma;
}

int suma_col(int** a, int c, int n)
{
	int suma = 0;
	for(int i = 0; i < n; ++i)
	{
		suma += a[i][c];
	}
	return suma;
}

void comuta_linie(int** a, int l, int m)
{
	for(int j = 0; j < m; ++j)
	{
		a[l][j] *= -1;
	}
}

void comuta_col(int** a, int c, int n)
{
	for(int i = 0; i < n; ++i)
	{
		a[i][c] *= -1;
	}
}

int main()
{
	FILE* fin = fopen("flip.in", "r");
	FILE* fout = fopen("flip.out", "w");
	int n = 0, m = 0;
	fscanf(fin, "%d %d", &n, &m);
	int** a = malloc(n * sizeof(int*));
	for(int i = 0; i < n; ++i)
	{
		a[i] = malloc(m * sizeof(int));
	}
	printf("%d %d\n", n, m);
	for(int i = 0; i < n; ++i)
	{
		for(int j = 0; j < m; ++j)
		{
			fscanf(fin, "%d", &a[i][j]);
		}
	}

	for(int i = 0; i < n; ++i)
	{
		if(suma_linie(a, i, m) < 0) comuta_linie(a, i, m);
	}
	for(int j = 0; j < m; ++j)
	{
		if(suma_col(a, j, n) < 0) comuta_col(a, j, n);
	}
	int suma = 0;
	for(int i = 0; i < n; ++i)
	{
		for(int j = 0; j < m; ++j)
		{
			suma += a[i][j];
		}
	}
	fprintf(fout, "%d", suma);
	for(int i = 0; i < n; ++i)
	{
		free(a[i]);
	}
	free(a);
	fclose(fin);
	fclose(fout);
	return 0;
}