Cod sursa(job #2013047)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 20 august 2017 12:36:41
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
#include<algorithm>
#define MAXN 17
#define INF 1000000000
void bkt(int cap,int size);
int sum();
FILE*fin,*fout;
int mat[MAXN][MAXN];
bool flipped[MAXN];
int N,M;
int ans;
int main()
{
	fin=fopen("flip.in","r");
	fout=fopen("flip.out","w");
	fscanf(fin,"%d%d",&N,&M);
	for(int i=1;i<=N;i++)
	{
		for(int j=1;j<=M;j++)
		{
			fscanf(fin,"%d",&mat[i][j]);
		}
	}
	ans=sum();
	bkt(1,1);
	fprintf(fout, "%d\n", ans);
	fclose(fin);
	fclose(fout);
	return 0;
}
void bkt(int cap,int size)
{
	if(size==N+1)
	{
		return;
	}
	if(cap==N+1)
	{
		return;
	}
	for(int i=cap;i<=N;i++)
	{
		flipped[i]=1;
		int s=sum();
		printf("%d\n",s);
		if(ans<s)
		{
			ans=s;
		}
		bkt(i+1,size+1);
		flipped[i]=0;
	}
}

int sum()
{
	int bestsum=0;
	for(int i=1;i<=M;i++)
	{
		int colsum=0;
		for(int j=1;j<=N;j++)
		{
			if(flipped[j])
			{
				colsum-=mat[j][i];
			}
			else
			{
				colsum+=mat[j][i];
			}
		}
		bestsum+=std::max(colsum,-colsum);

	}
	return bestsum;
}