Cod sursa(job #2329390)

Utilizator draducanuDragos Raducanu draducanu Data 26 ianuarie 2019 18:00:27
Problema Jocul Flip Scor 0
Compilator py Status done
Runda Arhiva de probleme Marime 1.97 kb
from functools import reduce

class Flip:

    def __init__(self, mat, n, m) -> None:
        super().__init__()
        self.mat = mat
        self.n = n
        self.m = m


    def sum(self, mat):
        return reduce(lambda a, b: a + b, reduce(lambda l1, l2: l1 + l2, mat))



    def flip(self, i, j):
        if i == n or j == m: return self.sum(self.mat)

        for k in range(n):
            mat[k][j] = -1 * mat[k][j]

        for k in range(m):
            mat[i][k] = -1 * mat[i][k]

        sol = self.sum(self.mat)
        newSol = self.flip(i, j + 1)
        sol = newSol if newSol > sol else sol
        newSol = self.flip(i + 1, j)
        sol = newSol if newSol > sol else sol

        return sol


fileIn = open('flip.in', 'r')
fileOut = open('flip.out', 'w')

n, m = [int(num) for num in fileIn.readline().split(' ')]

mat = [[int(num) for num in line.split(' ')] for line in fileIn]

fileOut.write(str(Flip(mat, n, m).flip(0, 0)))


fileIn.close()
fileOut.close()

# from functools import reduce
#
# class Flip:
#
#     def __init__(self, mat, n, m) -> None:
#         super().__init__()
#         self.mat = mat
#         self.semn = [1 for i in range(m)]
#         self.n = n
#         self.m = m
#
#
#
#     def flip(self, k):
#         if k == m:
#
#             sum = 0
#             for i in range(n):
#                 scol = 0
#                 for j in range(m):
#                     scol += self.mat[i][j] * self.semn[j]
#                 sum += abs(scol)
#
#             return sum
#         else:
#             self.semn[k] = 1
#             newSol1 = self.flip(k + 1)
#             self.semn[k] = -1
#             newSol2 = self.flip(k + 1)
#
#             return newSol1 if newSol2 > newSol1 else newSol2
#
#
# fileIn = open('flip.in', 'r')
# fileOut = open('flip.out', 'w')
#
# n, m = [int(num) for num in fileIn.readline().split(' ')]
#
# mat = [[int(num) for num in line.split(' ')] for line in fileIn]
#
# print(Flip(mat, n, m).flip(0))
#
#
# fileIn.close()
# fileOut.close()