Cod sursa(job #2639074)

Utilizator Edisedis suliman Edis Data 31 iulie 2020 11:47:03
Problema Jocul Flip Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int i,j,m,n,gata,s,smax;
int mat [17][17],v[17];
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)fin>>mat[i][j];
    }

    while(gata==0)
    {
        gata=0;


        ///schimbare
        for(j=1;j<=m;j++)
        {
            if(v[17-j]==1)for(i=1;i<=n;i++)mat[i][j]=mat[i][j]*(-1);
        }

        ///setare randuri
        for(i=1;i<=n;i++)
        {
            s=0;
            for(j=1;j<=m;j++)s=s+mat[i][j];
            if(s<0)for(j=1;j<=m;j++)mat[i][j]=mat[i][j]*(-1);
        }
        /*
        ///afisare matrice
        for(i=16-n;i<=16;i++)fout<<v[i]<<" ";
        fout<<endl;
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=m;j++)fout<<mat[i][j]<<" ";
            fout<<endl;
        }fout<<endl;
        */
        ///adunare
        s=0;
        for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)s=s+mat[i][j];
    }
        if(smax<s)smax=s;
        ///revenire la original
        for(j=1;j<=m;j++)
        {
            if(v[17-j]==1)for(i=1;i<=n;i++)mat[i][j]=mat[i][j]*(-1);
        }
        ///adunare
        v[16]++;
        for(i=16;i>=0;i--)
        {
            if(v[i]>1){v[i-1]++;v[i]=0;}
        }
        ///afisare adunare
        /*for(i=0;i<=16;i++)
        {
            fout<<v[i]<<"0";
        }fout<<endl;*/
        if(v[16-m]>0)break;


    }fout<<smax;






    return 0;
}