Cod sursa(job #2082640)
Utilizator | Data | 6 decembrie 2017 17:16:21 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.71 kb |
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
int v[20][20];
bitset <20>b;
bitset <20>b2;
int n,m;
int ad_b()
{
int i=1;
int j;
while (b[i]==1)
{
b[i]=0;
i++;
if (i>m)
{
b.reset();
return 1;
}
}
b[i]=1;
return 0;
}
int ad_b2()
{
int i=1;
int j;
while (b2[i]==1)
{
b2[i]=0;
i++;
if (i>n)
{
b2.reset();
return 1;
}
}
b2[i]=1;
return 0;
}
int main()
{
ifstream in("flip.in");
ofstream out("flip.out");
in>>n>>m;
int i,j;
int s=0;
for (i=1;i<=n;i++)
{
s=0;
for (j=1;j<=m;j++)
{
in>>v[i][j];
s=s+v[i][j];
}
v[i][0]=s;
}
for (j=1;j<=m;j++)
{
s=0;
for (i=1;i<=n;i++)
{
s=s+v[i][j];
}
v[0][j]=s;
}
int M=0;
while (ad_b()==0)
{
while (ad_b2()==0)
{
s=0;
for (j=1;j<=m;j++)
{
if (b[j]==1)
{
for (i=1;i<=n;i++)
{
v[i][j]*=-1;
}
}
}
for (i=1;i<=n;i++)
{
if (b2[i]==1)
{
for (j=1;j<=m;j++)
{
v[i][j]*=-1;
}
}
}
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
s=s+v[i][j];
}
if (s>M)
{
M=s;
/*cout<<M<<"\n\n";
for (i=1;i<=m;i++)
{
cout<<b[i]<<" ";
}
cout<<"\n";
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
{
cout<<v[i][j]<<" ";
}
cout<<b2[i]<<"\n";
}
cout<<"\n\n";*/
}
for (j=1;j<=m;j++)
{
if (b[j]==1)
{
for (i=1;i<=n;i++)
{
v[i][j]*=-1;
}
}
}
for (i=1;i<=n;i++)
{
if (b2[i]==1)
{
for (j=1;j<=m;j++)
{
v[i][j]*=-1;
}
}
}
}
}
out<<M;
}