Cod sursa(job #1433701)

Utilizator Salomia_Adrian_325CCSalomia Adrian Salomia_Adrian_325CC Data 9 mai 2015 18:19:34
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#include <stdlib.h>

void bkt_l(long *suma_max, int **m, int k, int *l, int N, int M) {
	int i;
	for(i = 0;i < 2;i++) {
		l[k] = i;
		if(k == N-1) {
			int j, p;
			long suma = 0;
			for(j = 0;j < M;j++) {
				long s = 0;
				for(p = 0;p < N;p++) {
					if(l[p] == 0)
						s = s + m[p][j];
					else
						s = s - m[p][j];
				}
				if(s < 0)
					suma = suma - s;
				else
					suma = suma + s;
			}
			if(suma > *suma_max)
				*suma_max = suma;
		}
		else {
			bkt_l(suma_max, m, k+1, l, N, M);
		}
	}
}

int main() {
	FILE *f1 = fopen("flip.in", "r");
	FILE *f2 = fopen("flip.out", "w");	
	int N, M;
	fscanf(f1, "%d%d", &N, &M);

	int i, j;
	int **m = (int **) malloc (N * sizeof(int*));
	for (i = 0; i < N; i++) {
		m[i] = (int *) malloc (M *sizeof(int));
	}

	for(i = 0;i < N;i++)
		for(j = 0;j < M;j++)
			fscanf(f1, "%d", &m[i][j]);

	long suma_max = -1000000;
	int *l = (int *) malloc (N * sizeof(int));
	bkt_l(&suma_max, m, 0, l, N, M);

	fprintf(f2, "%ld\n", suma_max);

	fclose(f1);
	fclose(f2);
	return 0;
}