Pagini recente » Cod sursa (job #2358559) | Cod sursa (job #2266107) | Cod sursa (job #1426578) | Cod sursa (job #1219309) | Cod sursa (job #468231)
Cod sursa(job #468231)
#include <fstream>
#define NMAX 20
using namespace std;
int n,m;
long fil[NMAX][NMAX],s,maxim,minim=LONG_MIN;
void schimba_coloana(int j)
{
int i;
for(i=0;i<n;i++)
{
fil[i][j]=-fil[i][j];
fil[i][m]=fil[i][m]+2*fil[i][j];
}
fil[n][j]=-fil[n][j];
s=s+2*fil[n][j];
if(s>maxim)
maxim=s;
}
void schimba_linia(int i)
{
int j;
for(j=0;j<m;j++)
{
fil[i][j]=-fil[i][j];
fil[n][j]=fil[n][j]+2*fil[i][j];
}
fil[i][m]=-fil[i][m];
s=s+2*fil[i][m];
if(s>maxim)
maxim=s;
}
int main()
{
int i,j,ce,indice;
fstream fin,fout;
fin.open("flip.in",ios::in);
fout.open("flip.out",ios::out);
fin>>n>>m;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
fin>>fil[i][j];
fil[n][j]+=fil[i][j];
fil[i][m]+=fil[i][j];
s+=fil[i][j];
}
}
while(minim<0)
{
minim=LONG_MAX;
for(j=0;j<m;j++)
{
if(fil[n][j]<minim)
{
minim=fil[n][j];
ce=1;
indice=j;
}
}
for(i=0;i<n;i++)
{
if(fil[i][m]<minim)
{
minim=fil[i][m];
ce=0;
indice=i;
}
}
if(minim<0)
if(ce==0)
schimba_linia(indice);
else
schimba_coloana(indice);
}
fout<<maxim<<'\n';
fin.close();
fout.close();
return 0;
}