Pagini recente » Cod sursa (job #2834274) | Cod sursa (job #2262115) | Cod sursa (job #3280957) | Cod sursa (job #448956) | Cod sursa (job #279317)
Cod sursa(job #279317)
#include<fstream>
#define sizelimit 17
using namespace std;
int array[sizelimit][sizelimit],tarray[sizelimit][sizelimit], n, m;
long long sum, sumpos, sumneg;
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();
}
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;
}
void testlinia()
{
for (int i=0;i<n;i++) {
sumpos=0; sumneg=0;
for (int j=0;j<m;j++) {
if (array[i][j]>0) sumpos+=array[i][j];
else if (array[i][j]<0) sumneg+=array[i][j]*(-1);
}
if (sumneg > sumpos) comutalinia(i);
}
}
void testcoloana()
{
for (int j=0;j<m;j++) {
sumpos=0; sumneg=0;
for (int i=0;i<n;i++) {
if (array[i][j]>0) sumpos+=array[i][j];
else if (array[i][j]<0) sumneg+=array[i][j]*(-1);
}
if (sumneg > sumpos) comutacoloana(j);
}
}
void suma()
{
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
sum+=array[i][j];
}
int main()
{
long long temp;
read();
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
tarray[i][j]=array[i][j];
testlinia();
testcoloana();
suma();
temp=sum;
sum=0;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
array[i][j]=tarray[i][j];
testcoloana();
testlinia();
suma();
ofstream out ("flip.out");
if (sum>temp) out<<sum;
else out<<temp;
out.close();
return 0;
}