Cod sursa(job #849798)

Utilizator unincepatorDigi Cazan unincepator Data 7 ianuarie 2013 17:31:12
Problema Jocul Flip Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<fstream>
#include<vector>
#include<iostream>

using namespace std;
vector<vector<long> > table;


long flip_and_sum(short* bit_map,int n,int m)
{
    int i ,j;
    long s = 0,csum;
    vector<vector<long> > ctable = table;
    for(j=0;j<m;++j)
    {
        csum = 0;
        for(i=0;i<n;i++)
              csum+=(bit_map[i])?-ctable[i][j]:ctable[i][j];
        if(csum<0)
            csum*=-1;
        s+=csum;
    }
    return s;
}
int main()
{

    int n,m,i,j,k = 0,as,ev;
    long max_sum = 0,temp;

    ifstream fin("flip.in");
    fin>>n>>m;
    table.resize(n,vector<long>(m,0));
    short * st = new short[n+m];
    for(i=0;i<n;++i)
        for(j=0;j<m;++j)
                fin>>table[i][j];
    fin.close();
    st[k]=-1;
    while(k>-1)
    {
        if(st[k]<1){
            st[k]++;as = 1;ev = 1;
        }
        else as = 0;

        if (as)
            if(k+1 == n ){
                    temp = flip_and_sum(st,n,m);
                    if(temp>max_sum)
                        max_sum = temp;
                }
            else{st[++k]=-1;}
        else k--;
    }
    delete [] st;
    ofstream g("flip.out");
    g<<max_sum;
    g.close();
    return 0;
}