Cod sursa(job #2595542)

Utilizator driver71528@gmail.comTerec Andrei-Sorin [email protected] Data 7 aprilie 2020 21:10:17
Problema Jocul Flip Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int n,m;
int x[17][17];
int s;
void Flip(int i,int j)
{
    int p;
    for(p=1;p<=n;p++)
        x[p][j] = -x[p][j];
    for(p=1;p<=m;p++)
        x[i][p] = -x[i][p];
    x[i][j]=-x[i][j];
}
int sum(int i,int j)
{
    int p;
    int suma = 0;
    for(p=1;p<=n;p++)
        suma += x[p][j];
    for(p=1;p<=m;p++)
        suma += x[i][p];
    suma -= x[i][j];
    return s - 2*suma;
}
int bkr(int lastI,int lastJ)
{
    int rez = s;
    int oldS;
    for(int i=lastI;i<=n;i++)
        for(int j=(i==lastI?lastJ+1:1);j<=m;j++)
    {
        int newS = sum(i,j);
        if(newS > rez)
        {
            oldS = s;
            Flip(i,j);
            s=newS;
            rez = max(rez,bkr(i,j));
            Flip(i,j);
            s = oldS;
        }
    }
    return rez;
}

int main()
{
    f>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            f>>x[i][j];
            s+=x[i][j];
        }
    g<<bkr(1,0);
    f.close();
    g.close();
    return 0;
}