Cod sursa(job #1777684)

Utilizator geralt_of_riviajohn nathalis geralt_of_rivia Data 12 octombrie 2016 20:01:35
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include<climits>
using namespace std;
ifstream cin ("flip.in");
ofstream cout ("flip.out");
int a[20][20],x[20],lin[20],n,m,maxim,v[50],sum[100];
void read ()
{ int s=0;
    cin>>n>>m;
    for(int i=1;i<=n;i++) { s=0;
        for(int j=1;j<=m;j++)
            cin>>a[i][j],s+=a[i][j],sum[0]+=a[i][j];
            lin[i]=s;
    }
}
void up_date (int k)
{ sum[k]=sum[k-1];
    if(x[k]<=n)
        sum[k]-=2*lin[x[k]];
        else
        {
            for(int i=1;i<=n;i++)
            {
                if(v[i]!=0)
                   sum[k]+=2*a[i][x[k]-n];
                   else sum[k]-=2*a[i][x[k]-n];
            }
        }
}
void bkt ()
{
    int k=1;
    while(k)
    {
        if(x[k]<n+m)
        { x[k]++;  up_date(k);
        if(sum[k]>maxim) {maxim=sum[k];
                v[x[k]]++; k++;
                x[k]=x[k-1]; }
        }
        else k--,v[x[k]]=0;
    }
}
void write ()
{
    cout<<maxim;
}
int main()
{
    read();
    bkt();
    write();
    cin.close();
    cout.close();
    return 0;
}