q, j, total_s, commuted_columns_s, commuted_rows_s, columns_s, rows_s = 2, 2, 0, 0, 0, 0, 0
with open("flip.in", "r") as fisierIN:
lines = fisierIN.readlines()
N = int(lines[0])
M = int(lines[1])
# COLUMNS:
# Only checking which columns we should commute!
while j < M + 2:
# THE (COMMUTED OR NOT) SUM OF THE COLUMNS.
for k in range(j, len(lines), M):
columns_s += int(lines[k])
if columns_s < 0:
commuted_columns_s += abs(columns_s)
total_s += columns_s
columns_s = 0
j += 1
# ROWS:
# Only checking which rows we should commute!
while q < len(lines):
for i in range(q, q + 3):
rows_s += int(lines[i])
if rows_s < 0:
commuted_rows_s += abs(rows_s)
# continue
total_s += rows_s
rows_s = 0
q += 3
# print(commuted_columns_s, commuted_rows_s)
# print("columns_s is:", columns_s, "|", "rows_s is:", rows_s, "|", "total_s is:", total_s)
with open("flip.out", "w") as fisierOUT:
fisierOUT.write(str(total_s - (max(commuted_rows_s, commuted_columns_s)
- min(commuted_rows_s, commuted_columns_s))))
# i + 1 -> columns
# i - 1 -> rows
# WE SHOULD PROBABLY **FIRST** CHECK WHICH ROWS OR/AND COLUMNS WE COMMUTE.