Pagini recente » Cod sursa (job #1548609) | Cod sursa (job #2645500) | Cod sursa (job #2867812) | Cod sursa (job #2296859) | Cod sursa (job #710427)
Cod sursa(job #710427)
#include<fstream>
using namespace std;
short n,m;
int ST[100];
short k;
bool as,ev;
ifstream f("flip.in");
ofstream g("flip.out");
long long int suma=0,suma1=0,smax=0,M[16][16];
void init()
{
ST[k]=-1;
}
void succ()
{
if(ST[k]<1)
{
ST[k]++;
as=1;
}
else as=0;
}
void valid()
{
suma1=0;
if(k==n)
{
for(int j=1;j<=m;j++)
{
suma=0;
for(int i=1;i<=n;i++)
{
if(ST[i]==0)
suma+=M[i][j];
else suma-=M[i][j];
}
if(suma>0)
suma1+=suma;
else suma1-=suma;
}
}
ev=1;
}
void tipar()
{
if(suma1>smax)
smax=suma1;
}
int sol()
{
return (k==n);
}
void back()
{
k=1;
init();
while(k)
{
do{
succ();
if(as)
valid();
}
while(as && !ev);
if(as)
if(sol())
tipar();
else{
k++;
init();
}
else k--;
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
f>>M[i][j];
back();
g<<smax;
f.close();
g.close();
return 0;
}