Pagini recente » Cod sursa (job #1236510) | Cod sursa (job #2171319) | Cod sursa (job #2943166) | Cod sursa (job #1633711) | Cod sursa (job #27717)
Cod sursa(job #27717)
#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 invl(int l)
{ for(int j=1;j<=m;j++)
a[l][j]*=-1;
}
void invc(int c)
{ for(int i=1;i<=n;i++)
a[i][c]*=-1;
}
long sumac(int c)
{ long s=0;
for(int i=1;i<=n;i++)
s+=a[i][c];
return s;
}
long sumal(int l)
{ long s=0;
for(int j=1;j<=m;j++)
s+=a[l][j];
return s;
}
int u[20];
void scrie()
{ for(int i=1;i<=m;i++)
u[i]=0;
}
void flip(int l)
{
int i,j; long s; int gas=0;
if(l==n+1)
{ s=sum();
if(smax<s) smax=s;
for(j=1;j<=m;j++)
{
if(sumac(j)<0) { invc(j); u[j]=1; }
}
s=sum();
if(smax<s) smax=s;
for(j=1;j<=m;j++)
{ if(u[j]==1) invc(j);
}
scrie();
}
else { invl(l);
flip(l+1);
invl(l);
flip(l+1);
}
}
void afisare()
{ ofstream g("flip.out");
g<<smax;
g.close();
}
int main()
{ citire();
smax=sum();
flip(1);
afisare();
return 0;
}