Cod sursa(job #1858238)

Utilizator birotxNedelcescu Radu Costin birotx Data 27 ianuarie 2017 10:49:46
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <iostream>
#include <fstream>
#include <math.h>

using namespace std;

ifstream f("flip.in");
ofstream g("flip.out");


class flipClass{
    private:
        int n,m,perm, lastpos;
        long long matrix[17][17];

    public:
        long long maxi;
        flipClass(){
            perm=0;
            maxi = 0;
            for(int i=1;i<=17; i++)
            {
                matrix[i][0]=1;
                matrix[0][i]=1;
            }

        }
    void read(){
        f>>m;
        f>>n;
        lastpos=n+m;
        for(int i=1;i<=m;i++)
        {
            for(int j=1; j<=n; j++)
            {
                f>>matrix[i][j];
            }
        }
    }
    void show(){
        for(int i=1;i<=m;i++)
        {
            for(int j=1; j<=n; j++)
            {
                cout<<matrix[i][j]<<" ";
            }
            cout<<'\n';
        }
        cout<<'\n';
    }
    void do_p(int poz, int val){
        //cout<< poz<<" "<<val<<" ";
        if(poz<=m)
            matrix[poz][0] = val;
        else
            matrix[0][poz-m] = val;

        if(poz == lastpos){
            long long perm_s = 0;
            for(int i=1;i<=m;i++)
                for(int j=1;j<=n;j++)
                    perm_s += matrix[i][0]*matrix[0][j]*matrix[i][j];
            if(perm_s > maxi) maxi = perm_s;
        }
        else
        {
            do_p(poz+1, 1);
            do_p(poz+1, -1);
        }
    }
};

int main()
{

    flipClass flip;
    flip.read();
    //flip.show();
    flip.do_p(1,1);
    flip.do_p(1,-1);
    g<<flip.maxi;
}