Pagini recente » Cod sursa (job #1704596) | agm-r1-lacheta | Cod sursa (job #770395) | Cod sursa (job #368696) | Cod sursa (job #423552)
Cod sursa(job #423552)
#include<fstream.h>
int l, c, sm=0, smax=0, m[20][20];
int tfl(int ln)
{
int sm=0;
for(int i=1; i<=c; i++)
sm+=m[ln][i];
if(sm<=0)
return (-sm)*2;
return 0;
}
int tfc(int cn)
{
int sm=0;
for(int i=1; i<=l; i++)
sm+=m[i][cn];
if(sm<=0)
return (-sm)*2;
return 0;
}
void flipl(int ln)
{
for(int i=1; i<=c; i++)
m[ln][i]*=-1;
}
void flipc(int cn)
{
for(int i=1; i<=l; i++)
m[i][cn]*=-1;
}
void back()
{
int i, aux;
for(i=1; i<=l; i++)
{
aux=tfl(i);
if(aux)
{
sm+=aux;
if(sm>smax)
smax=sm;
flipl(i);
back();
flipl(i);
sm-=aux;
}
}
for(i=1; i<=c; i++)
{
aux=tfc(i);
if(aux)
{
sm+=aux;
if(sm>smax)
smax=sm;
flipc(i);
back();
flipc(i);
sm-=aux;
}
}
}
int main(){
int i, j;
ifstream f("flip.in");
f>>l>>c;
for(i=1; i<=l; i++)
for(j=1; j<=c; j++)
{
f>>m[i][j];
sm+=m[i][j];
}
smax=sm;
back();
ofstream g("flip.out");
g<<smax;
g.close();
return 0;
}