Pagini recente » Cod sursa (job #2077918) | Cod sursa (job #1180337) | Cod sursa (job #457848) | Cod sursa (job #321491) | Cod sursa (job #593896)
Cod sursa(job #593896)
#include <fstream.h>
long long b[17][17], bv[17][17];
int m, n;
void cutzu()
{
for (int lk=0; lk<n; lk++)
{
for (int kl=0; kl<m; kl++)
{
b[lk][kl]=bv[lk][kl];
}
}
}
int sumacoloana(int w)
{
long long S2=0;
for (int e=0; e<n; e++)
{
S2+=b[e][w];
}
if (S2>=0) return S2;
return -S2;
}
/*void flip_coloana(int k)
{
for (int o=0; o<n; o++)
{
b[o][k]*=-1;
}
}*/
void flip_linie(int l)
{
for (int p=0; p<m; p++)
{
b[l][p]*=-1;
}
}
int main()
{
int i, j, u;
int v[17];
long long max=-1000000, S;
ifstream ins;
ins.open("flip.in");
ins>>n>>m;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
ins>>b[i][j];
bv[i][j]=b[i][j];
}
}
for (u=0; u<m+2; u++)
{
v[u]=0;
}
while (v[m+1]==0)
{
S=0;
v[0]++;
cutzu();
for (int y=0; y<m+1; y++)
{
if (v[y]==2)
{
v[y+1]++;
v[y]=0;
}
else break;
}
for (int t=0; t<m; t++)
{
if (v[t]==1) flip_linie(t);
}
for (int asdf=0; asdf<n; asdf++)
{
S+=sumacoloana(asdf);
}
if (max<S) max=S;
}
ins.close();
ofstream ous;
ous.open("flip.out");
ous<<max;
ous.close();
return 0;
}