Cod sursa(job #1727614)

Utilizator MihalachiRazvanMihalachi Razvan MihalachiRazvan Data 11 iulie 2016 12:23:22
Problema Jocul Flip Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.17 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m,a[17][17],l[17],c[17],s,si,ver,i,j,verl,verr,verc,poz,mini,sf=0;
void sumal()
{
        for(i=1;i<=m;i++)
    {
        s=0;
        for(j=1;j<=n;j++)
            s=s+a[i][j];
           l[i]=s;
    }
}
void sumac()
{
      for(j=1;j<=m;j++)
    {
        s=0;
        for(i=1;i<=n;i++)
            s=s+a[i][j];
           c[j]=s;
    }
}
int main()
{
    f>>n>>m;
    si=0;
    for(i=1;i<=n;i++)
        {
            s=0;
            for(j=1;j<=m;j++)
          {f>>a[i][j];
          s=s+a[i][j];}
          l[i]=s;}
  for(i=1;i<=n;i++)
   si=si+l[i];
    ver=1;
    for(j=1;j<=m;j++)
    {
        s=0;
        for(i=1;i<=n;i++)
            s=s+a[i][j];
           c[j]=s;
    }
  while(ver==1)
  {
      verl=1;
      verc=1;
      mini=l[1];
      for(i=2;i<=n;i++)
        if(mini>l[i])
        {mini=l[i];
        poz=i;}
        if(mini<=0)
            verl=0;
        if(verl==0)
        {
            for(i=1;i<=n;i++)
            if(mini==l[i]&&poz!=i)
            {
                l[i]=l[i]*(-1);
                for(j=1;j<=m;j++)
                    a[i][j]=a[i][j]*(-1);
            }
            l[poz]=l[poz]*(-1);
            for(j=1;j<=m;j++)
                a[poz][j]=a[poz][j]*(-1);
                sumac();
                for(j=1;j<=m;j++)
            mini=c[1];
            poz=1;
            for(j=2;j<=m;j++)
                if(mini>c[j])
            {
                mini=c[j];
                poz=j;
            }
            if(mini<=0)
                verc=0;
                if(verc==0)
                {
                    for(j=1;j<=m;j++)
                        if(mini==c[j]&&poz!=j)
                    {
                         c[j]=c[j]*(-1);
                         for(i=1;i<=n;i++)
                            a[i][j]=a[i][j]*(-1);
                    }
                    c[poz]=c[poz]*(-1);
                    for(i=1;i<=n;i++)
                        a[i][poz]=a[i][poz]*(-1);
                        sumal();
                }
        }
        else
        {
           mini=c[1];
            poz=1;
            for(j=2;j<=m;j++)
                if(mini>c[j])
            {
                mini=c[j];
                poz=j;
            }
            if(mini<=0)
                verc=0;
                if(verc==0)
                {
                    for(j=1;j<=m;j++)
                        if(mini==c[j]&&poz!=j)
                    {
                         c[j]=c[j]*(-1);
                         for(i=1;i<=n;i++)
                            a[i][j]=a[i][j]*(-1);
                    }
                    c[poz]=c[poz]*(-1);
                    for(i=1;i<=n;i++)
                        a[i][poz]=a[i][poz]*(-1);
                        sumal();

                }
        }
        if(verc==1&&verl==1)
            ver=0;
        if(ver==0)
        {
            sumac();
            s=0;
            for(j=1;j<=m;j++)
                s=s+c[j];
        }
  }
  g<<s;
            f.close();
            g.close();

    return 0;
}