Pagini recente » Istoria paginii utilizator/djok | Cod sursa (job #2017384) | Cod sursa (job #581330) | Monitorul de evaluare | Cod sursa (job #680944)
Cod sursa(job #680944)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f;
ofstream g;
long a[16][16]; //fuchs optimizare * prima data sa mearga programul :)) !
int n,m,i,j;
int k,cc,maxim;
void afisare()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void comutal(int l)
{
int j;
for(j=1;j<=m;j++)
a[l][j]=-a[l][j];
}
void comutac(int c)
{
int i;
for(i=1;i<=n;i++)
a[i][c]=-a[i][c];
}
long sumal(int l)
{
long s=0;
int j;
for(j=1;j<=m;j++)
s=s+a[l][j];
return s;
}
long sumac(int c)
{
long s=0;
int i;
for(i=1;i<=n;i++)
s=s+a[i][c];
return s;
}
int sumat()
{
int csuma=0;
// afisare();
for(i=1;i<=n;i++)
{
csuma+=sumal(i);
}
return csuma;
}
void back()
{
for(int i=1;i<=n;i++)
{
comutal(i);
for(k=i+1;k<=n;k++)
{
comutal(k);
if(maxim<sumat())
maxim=sumat();
}
for(int j=1;j<=m;j++)
{
comutac(j);
if(maxim<sumat())
maxim=sumat();
for(cc=1;cc<=m;cc++)
{
comutac(cc);
if(maxim<sumat())
maxim=sumat();
}
}
}
for(int j=1;j<=m;j++)
{
comutac(j);
if(maxim<sumat())
maxim=sumat();
for(cc=1;cc<=m;cc++)
{
comutac(cc);
if(maxim<sumat())
maxim=sumat();
}
for(int i=1;i<=n;i++)
{
comutal(i);
for(k=i+1;k<=n;k++)
{
comutal(k);
if(maxim<sumat())
maxim=sumat();
}
}
}
for(k=1;k<=n*m;k++)
for(j=1;j<=m;j++)
{
comutac(j);
if(maxim<sumat())
maxim=sumat();
for(i=1;i<=n;i++)
{
comutal(i);
if(maxim<sumat())
maxim=sumat();
}
}
for(int k=1;k<=n*m;k++)
for(int i=1;i<=n;i++)
{
comutal(i);
if(maxim<sumat())
maxim=sumat();
comutal(i);
if(maxim<sumat())
maxim=sumat();
for(int j=1;j<=m;j++)
{
comutac(j);
if(maxim<sumat())
maxim=sumat();
comutac(j);
if(maxim<sumat())
maxim=sumat();
}
}
for(k=1;k<=n*m;k++)
for(j=1;j<=m;j++)
{
comutac(j);
if(maxim<sumat())
maxim=sumat();
comutac(j);
if(maxim<sumat())
maxim=sumat();
for(i=1;i<=n;i++)
{
comutal(i);
if(maxim<sumat())
maxim=sumat();
comutal(i);
if(maxim<sumat())
maxim=sumat();
}
}
}
int main()
{
long csuma=0;
// citirea //
f.open("flip.in");
f>>n>>m;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
f>>a[i][j];
}
}
back();
// nu stiu daca am inteles ideea jocului
// sa speram ca e ce terbuie :)
// afisare();
g.open("flip.out");
g<<maxim;
}