Pagini recente » Cod sursa (job #913657) | Cod sursa (job #475760) | Rating Petre Alexandru Teodor (Petre_Alexandru_Teodor_321CB) | Cod sursa (job #917551) | Cod sursa (job #2329390)
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()