Pagini recente » Cod sursa (job #1660849) | Utilizatori inregistrati la Stelele Informaticii 2009, clasele 9-10, ziua 2 | Cod sursa (job #1002830) | Cod sursa (job #843937) | Cod sursa (job #2901437)
#!/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):
row_sum = 0
for j in range(self.m):
row_sum += self.board[i][j]
total_sum += abs(row_sum)
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))