Cod sursa(job #2193693)

Utilizator AndreiDeltaBalanici Andrei Daniel AndreiDelta Data 10 aprilie 2018 22:48:10
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
void Generare_Coloane(int);   // 0-necomutare  1-comutare
long long Flip[17][17],S,Max=-18000000;
long long L[17],C[17],Lc[17],Cc[17];
long long Lf[2][17],Cf[2][17];
int N,M;

void Citire()
{
    f>>N>>M;
    for(int i=1;i<=N;i++)
        for(int j=1;j<=M;j++)
        {
            f>>Flip[i][j];
            L[i]+=Flip[i][j]; Lc[i]+=(-1)*Flip[i][j];
            C[j]+=Flip[i][j]; Cc[j]+=(-1)*Flip[i][j];
        }
}

void Generare_Linii(int k)
{
    if(S>Max) Max=S;
    g<<k<<" "<<S<<'\n';
   for(int i=0;i<=1&&k<=N;i++)
   {
       if(i==0) S+=L[k];
       else S+=(-1)*Lc[k];
       Lf[i][k]=S;
       Generare_Linii(k+1);
       if(i==0) S-=L[k];
       else S-=(-1)*Lc[k];
   }
}

void Generare_Coloane(int l)
{
    if(S>Max) Max=S;
    g<<"gfdas"<<" "<<l<<" "<<S<<'\n';
    for(int j=0;j<=1&&l<=M;j++)
    {
        if(j==0) S+=C[l];
       else S+=(-1)*Cc[l];
       Cf[j][l]=S;
        Generare_Coloane(l+1);
        if(j==0) S-=C[l];
       else S-=(-1)*Cc[l];
    }
}

int main()
{
    Citire();
    Generare_Linii(1);
    Generare_Coloane(1);


    return 0;
}