Cod sursa(job #2901438)

Utilizator LucianCCraciun Lucian Stefan LucianC Data 13 mai 2022 18:54:11
Problema Jocul Flip Scor 40
Compilator py Status done
Runda Arhiva de probleme Marime 1.36 kb
#!/usr/bin/env python
# coding: utf-8

# Jocul Flip

class FlipGame:

    def __init__(self, n, m, board):
        self.n = n
        self.m = m
        self.board = board
        self.max_sum = 0

    def board_sum(self):
        total_sum = 0
        for i in range(self.n):
            total_sum += abs(sum(self.board[i]))

        return total_sum


    def solve_flip(self):
        self.solve(0)
        return self.max_sum

    def solve(self, k):
        if k >= self.m:
            self.max_sum = max(self.max_sum, self.board_sum())

        else:
            self.max_sum = max(self.max_sum, self.board_sum())
            self.solve(k+1)
            for i in range(self.n):
                self.board[i][k] = - self.board[i][k]
            self.solve(k+1)



if __name__ == "__main__":
    with open("flip.in") as fin:
        n, m = map(int, fin.readline().split())
        arr = []
        for i in range(n):
            line = list(map(int, fin.readline().split()))
            arr.append(line)

    # n, m = 5, 3
    # arr = [[4, -2, 2],
    #        [3, -1, 5],
    #        [2, 0, -3],
    #        [4, 1, -3],
    #        [5, -3, 2]]

    flip = FlipGame(n, m, arr)
    flip_sum = flip.solve_flip()
    print(flip_sum)
    
    with open("flip.out", "w+") as fout:
        fout.write("{:.0f}".format(flip_sum))