Pagini recente » Cod sursa (job #511318) | Cod sursa (job #1288115) | Cod sursa (job #287715) | Cod sursa (job #1682566) | Cod sursa (job #300091)
Cod sursa(job #300091)
#include<fstream>
#define sizelimit 17
using namespace std;
int array[sizelimit][sizelimit];
int n, m;
/*********************************
* READ FROM FILE *
*********************************/
void read()
{
ifstream in ("flip.in");
in>>n>>m;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
in>>array[i][j];
in.close();
}
/*********************************
* COMUTA *
*********************************/
void comutalinia(int linia)
{
for (int i=0;i<m;i++)
array[linia][i]*=-1;
}
void comutacoloana(int coloana)
{
for (int i=0;i<n;i++)
array[i][coloana]*=-1;
}
/*********************************
* SUME *
*********************************/
long long sumalinie(int i)
{
long long temp=0;
for (int j=0;j<m;j++)
temp+=array[i][j];
return temp;
}
long long sumacoloana(int j)
{
long long temp=0;
for (int i=0;i<n;i++)
temp+=array[i][j];
return temp;
}
long long suma()
{
long long temp=0;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
temp+=array[i][j];
return temp;
}
/*********************************
* FIND BEST SOLUTIONS *
*********************************/
void findlinia()
{
long long sumlin1, sumlin2;
for (int i=0;i<n;i++) {
sumlin1=sumalinie(i);
comutalinia(i);
sumlin2=sumalinie(i);
if (sumlin2<sumlin1) comutalinia(i);
}
}
void findcoloana()
{
long long sumcol1, sumcol2;
for (int j=0;j<n;j++) {
sumcol1=sumacoloana(j);
comutacoloana(j);
sumcol2=sumacoloana(j);
if (sumcol2<sumcol1) comutacoloana(j);
}
}
/*********************************
* MAIN function *
*********************************/
int main()
{
long long temp;
/// read data from file
read();
/// find solutions
findlinia();
findcoloana();
/// output solutions
temp=suma();
ofstream out ("flip.out");
out<<temp;
/// cleanup
out.close();
return 0;
}