Cod sursa(job #2081193)
Utilizator | Data | 4 decembrie 2017 12:22:00 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.23 kb |
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m,i,j,v[17][17],x[17],Max;
void back(int k)
{
x[k]=1;
int j,l;
if(k==m)
{
int st=0;
for(j=1;j<=n;j++)
{
int s=0;
for(l=1;l<=m;l++)
if(x[l]==0)
s+=v[j][l];
else
s-=v[j][l];
if(s<=0)
st-=s;
else
st+=s;
}
Max=max(Max,st);
}
else
back(k+1);
x[k]=0;
if(k==m)
{
int st=0;
for(j=1;j<=n;j++)
{
int s=0;
for(l=1;l<=m;l++)
if(x[l]==0)
s+=v[j][l];
else
s-=v[j][l];
if(s<=0)
st-=s;
else
st+=s;
}
Max=max(Max,st);
}
else
back(k+1);
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
f>>v[i][j];
Max+=v[i][j];
}
back(1);
g<<Max;
return 0;
}