Pagini recente » Cod sursa (job #1877283) | Cod sursa (job #1153709) | Cod sursa (job #1582555) | Cod sursa (job #945252) | Cod sursa (job #811390)
Cod sursa(job #811390)
/*
* =====================================================================================
*
* Filename: flip.cpp
*
* Description: http://infoarena.ro/problema/flip
*
* Version: 1.0
* Created: 11/12/2012 01:45:08 AM
* Revision: none
* Compiler: gcc
*
* Author: YOUR NAME (),
* Organization:
*
* =====================================================================================
*/
#include<iostream>
#include<cstdio>
using namespace std;
class Flip
{
int a[17][17],n,m,max_S;
FILE *in,*out;
public:
Flip();
int maxMatrix();
void back(int k);
void seeValue();
~Flip();
};
Flip::Flip()
{
max_S = 0;
in = fopen("flip.in","r");
out = fopen("flip.out","w");
fscanf(in,"%d %d",&n,&m);
for(int i = 0 ; i < n ; i++)
for(int j = 0 ; j < m ; j++)
fscanf(in,"%d",&a[i][j]);
}
int Flip::maxMatrix()
{
int S = 0,sum_temp;
for(int i = 0 ; i < n ; i++)
{
sum_temp = 0;
for(int j = 0 ; j < m ; j++)
sum_temp+=a[i][j];
if(sum_temp < 0)
sum_temp*=(-1);
S+=sum_temp;
}
return S;
}
void Flip::back(int k)
{
if( k == m )
{
int sum_matrix_temp = maxMatrix();
if(sum_matrix_temp > max_S)
max_S = sum_matrix_temp;
}
else
{
back(k+1);
for(int i = 0 ; i < n ; i++)
a[i][k]*=(-1);
back(k+1);
}
}
void Flip::seeValue()
{
fprintf(out,"%d",max_S);
}
Flip::~Flip()
{
fclose(in);
fclose(out);
}
int main()
{
Flip t;
t.back(0);
t.seeValue();
return 0;
}