Pagini recente » Cod sursa (job #2087690) | Cod sursa (job #1244191) | Cod sursa (job #1999553) | Cod sursa (job #1044245) | Cod sursa (job #26912)
Cod sursa(job #26912)
#include <fstream.h>
#include <stdlib.h>
int n, m;
long a[6][6], b[20][20];
int h[20], g[20];
long smax;
void citire()
{int i, j;
ifstream f("flip.in");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f>>a[i][j];
}
long sum()
{ int i ,j;
long s=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s+=a[i][j];
return s;
}
void copiaza()
{ int i, j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
b[i][j]=a[i][j];
}
void min1(int l)
{ for(int j=1;j<=m;j++)
a[l][j]*=-1;
}
void min2(int c)
{ for(int i=1;i<=n;i++)
a[i][c]*=-1;
}
long suma(int c)
{ long s=0;
for(int i=1;i<=n;i++)
s+=a[i][c];
return s;
}
long suma1(int l)
{ long s=0;
for(int j=1;j<=m;j++)
s+=a[l][j];
return s;
}
void rest()
{ for(int i=0;i<=n;i++)
for(int j=0;j<=m;j++)
a[i][j]=b[i][j];
}
void flip(int l)
{
int i,j; long s;
s=sum();
if(s>smax) smax=s;
if(l<=n)
{ for(i=1;i<=n;i++)
{ if(suma1(i)<0)
{ min1(i);
for(j=1;j<=m;j++)
{ if(suma(j)<0) {
min2(j);
flip(l+1);
min2(j);
}
}
min1(i);
}
}
}
}
void afisare()
{ ofstream g("flip.out");
g<<smax;
g.close();
}
int main()
{ citire();
smax=sum();
flip(1);
afisare();
return 0;
}