Cod sursa(job #2903258)

Utilizator Andrei-HoriaAndrei-Horia Pacurar Andrei-Horia Data 17 mai 2022 12:06:19
Problema Jocul Flip Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <fstream>
#include <iostream>
#include <string>
#include <cmath>

using namespace std;

ifstream fin("flip.in");
ofstream fout("flip.out");

int A[17][17];
int B[17][17];

int main(){
    int n,m;
    int max1=0,max2=0;
    fin>>n>>m;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        fin>>A[i][j];

    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            B[i][j] = A[i][j];

    //CASE I
    for(int j=0;j<m;j++){
        int sum1 = 0;
        int sum2 = 0;
        for(int i=0;i<n;i++){
            sum1 += A[i][j];
            sum2 += -A[i][j];
        }
        if(sum2 >= sum1)
            for(int i=0;i<n;i++)
                A[i][j] = -A[i][j];
    }

    for(int i=0;i<n;i++){
        int sum1 = 0;
        int sum2 = 0;
        for(int j=0;j<m;j++){
            sum1 += A[i][j];
            sum2 += -A[i][j];
        }

        max1 += max(sum1,sum2);
    }

    //CASE II
    for(int i=0;i<n;i++){
        int sum1 = 0;
        int sum2 = 0;
        for(int j=0;j<m;j++){
            sum1 += B[i][j];
            sum2 += -B[i][j];
        }
        if(sum2 >= sum1)
            for(int j=0;j<m;j++)
                B[i][j] = -B[i][j];
    }

    for(int j=0;j<m;j++){
        int sum1 = 0;
        int sum2 = 0;
        for(int i=0;i<n;i++){
            sum1 += B[i][j];
            sum2 += -B[i][j];
        }

        max2 += max(sum1,sum2);
    }

    fout<<max(max1,max2);
    return 0;
}