Mai intai trebuie sa te autentifici.
Cod sursa(job #163744)
Utilizator | Data | 23 martie 2008 04:55:52 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.13 kb |
#include<fstream.h>
int n, m;
unsigned long a[17][17];
void citire()
{
int i, j;
ifstream fin("flip.in");
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fin>>a[i][j];
}
void main()
{
citire();
int p=1, i, j, pp, min;
long l[17], c[17];
ofstream fout("flip.out");
for(i=1;i<=n;i++)
{
l[i]=0;
for(j=1;j<=m;j++)
l[i]=l[i]+a[i][j];
}
for(i=1;i<=m;i++)
{
c[i]=0;
for(j=1;j<=n;j++)
c[i]=c[i]+a[j][i];
}
while(p)
{
p=0;
min=l[1];
for(i=2;i<=n;i++)
if(l[i]<0 && l[i]<min)
{ min=l[i];
p=i;
}
pp=0;
for(i=1;i<=m;i++)
if(c[i]<0 && c[i]<min)
{
min=c[i];
pp=1;
p=i;
}
if(pp==0)
{
l[p]=-l[p];
for(i=1;i<=m;i++)
{
a[p][i]=-a[p][i];
c[i]=c[i]+2*a[p][i];
}
}
else
{
c[p]=-c[p];
for(i=1;i<=n;i++)
{
a[i][p]=-a[i][p];
l[i]=l[i]+2*a[i][p];
}
}
}
int s=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s=s+a[i][j];
fout<<s;
}