Cod sursa(job #1513726)

Utilizator novistaAlex Staicu novista Data 29 octombrie 2015 21:40:32
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
using namespace std;
int x[40],n,m,a[17][17],mx,s1[18],s2[18],con;
ifstream fin ("flip.in");
ofstream fout ("flip.out");
void afis()
{
    int i,j,s=0;
    for (i=1;i<=n;i++)
    {
        if (x[i]==0) s=s+s2[i];
        else s=s+s1[i];
    }
    for (j=n+1;j<=n+m;j++)
    {
     for (i=1;i<=n;i++)
         // if (x[i]==0&&x[j]==1) s=s+2*a[i][j-n+1];
                /*else*/ if (x[i]==1&&x[j]==0) s=s-2*a[i][j-n+1];
    }
    //fout<<con<<" ";
    //for (i=1;i<=n+m;i++) fout<<x[i]<<" ";
   // fout<<"\n"<<s<<" ";
    //fout<<"\n";
    con++;
    if (s>mx) mx=s;
}
void Back(int k)
{
    int i;
    if (k>(n+m)) afis();
    else
    {
        for (i=0;i<=1;i++)
        {
            x[k]=i;
            Back(k+1);
        }
    }
}
int main()
{
    int i,j;
    fin>>n>>m;
    for (i=1;i<=n;i++)
    {
        for (j=1;j<=m;j++)
        {
            fin>>a[i][j];
            s1[i]=s1[i]+a[i][j];
            s2[i]=s2[i]-a[i][j];
        }
       // cout<<s1[i]<<" "<<s2[i]<<"\n";
    }
    Back(1);
  //  cout<<con;
    fout<<mx;
    fin.close();
    fout.close();
    return 0;
}