Cod sursa(job #1858118)

Utilizator birotxNedelcescu Radu Costin birotx Data 27 ianuarie 2017 00:56:23
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 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=0, perm_v[33];
        long matrix[17][17];
        long maxi = 0;
    public:

    void flip(){
        cout<<"init...";
    }
    void read(){
        f>>m;
        f>>n;

        for(int i=0;i<m;i++)
        {
            for(int j=0; j<n; j++)
            {
                f>>matrix[i][j];
            }
        }
    }
    /*show(){
        for(int i=0;i<m;i++)
        {
            for(int j=0; j<n; j++)
            {
                cout<<matrix[i][j]<<" ";
            }
            cout<<'\n';
        }
        cout<<'\n';
    }*/
    int do_p(){
        long a_total = 0;

        for(int i=0;i<m;i++){
                perm_v[i]=((perm & (1<<i))>>i);

        }
        for(int i=0;i<n;i++){
                perm_v[m+i]=((perm & (1<<m+i))>>m+i);
        }


        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                a_total += (perm_v[i] ^ perm_v[m+j]) ? ((-1) * matrix[i][j]) : matrix[i][j];
            }
        }
        if(a_total > maxi)
        {
            maxi = a_total;
        }
        perm++;
        return perm;
    }
    int getmax_p(){
        return pow(2,n+m);
    }
    long finish(){
        return maxi;
    }
};

int main()
{

    flipClass flip;
    flip.read();
    //flip.show();

    unsigned long mp = flip.getmax_p();
    while(flip.do_p()<mp);

    cout<< flip.finish();
}