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])
# print("columns_s is:", columns_s)
if columns_s < 0:
commuted_columns_s += abs(columns_s)
# columns_s = 0
# j += 1
# continue
total_s += columns_s
# print("total_s is:", total_s)
columns_s = 0
j += 1
# z = total_s
# ROWS:
# Only checking which rows we should commute!
while q < len(lines):
for i in range(q, q + M):
rows_s += int(lines[i])
if rows_s < 0:
commuted_rows_s += abs(rows_s)
rows_s = 0
q += M
continue
# total_s += rows_s
rows_s = 0
q += M
# print(commuted_columns_s, commuted_rows_s)
# print(total_s - z)
# 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 + 2*(commuted_columns_s + commuted_rows_s)))
# i + 1 -> columns
# i - 1 -> rows
# WE SHOULD PROBABLY **FIRST** CHECK WHICH ROWS OR/AND COLUMNS WE COMMUTE.