Cod sursa(job #222346)

Utilizator flavius_mesterMester Flavius flavius_mester Data 21 noiembrie 2008 21:48:43
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<fstream>
#include<iostream>

using namespace std;
long a[17][17];
int n,m;
void determina()
{long s=0,s_new=0;
int i,j;
for(i=1;i<=n;i++)
{s=0;s_new=0;
for(j=1;j<=m;j++)s+=a[i][j];
for(j=1;j<=m;j++)s_new+=a[i][j]*(-1);
a[i][0]=s_new-s;
                 }

for(j=1;j<=m;j++)
{s=0;s_new=0;
for(i=1;i<=n;i++)s+=a[i][j];
for(i=1;i<=n;i++)s_new+=a[i][j]*(-1);
a[0][j]=s_new-s;
                 }


     }

int main()
{
int i,j;
ifstream f("flip.in");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f>>a[i][j];
f.close();

long  max;
int lc=0,ind=0;

determina();
max=a[1][0];
for(i=1;i<=n;i++)if(a[i][0]>max)max=a[i][0],lc=0,ind=i;
for(j=1;j<=m;j++)if(a[0][j]>max)max=a[0][j],lc=1,ind=j;

while(max>0)
{
if(lc==0)for(i=1;i<=m;i++)a[ind][i]=a[ind][i]*(-1);
else for(i=1;i<=n;i++)a[i][ind]=a[i][ind]*(-1);

determina();
max=a[1][0];
for(i=1;i<=n;i++)if(a[i][0]>max)max=a[i][0],lc=0,ind=i;
for(j=1;j<=m;j++)if(a[0][j]>max)max=a[0][j],lc=1,ind=j;

}


long s=0;
ofstream g("flip.out");

for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s+=a[i][j];
g<<s;
g.close();

return 0;}