Cod sursa(job #2786649)

Utilizator LucianCCraciun Lucian Stefan LucianC Data 21 octombrie 2021 13:15:16
Problema Jocul Flip Scor 0
Compilator py Status done
Runda Arhiva de probleme Marime 1.22 kb
#!/usr/bin/env python
# coding: utf-8

# Jocul Flip

if __name__ == "__main__":
    with open("flip.in") as fin:
        a, b = map(int, fin.readline().split())
        arr = []
        for i in range(a):
            line = list(map(int, fin.readline().split()))
            arr.append(line)
    
    def sum_arr(arr):
        ss = 0
        for i in range(len(arr)):
            ss += sum(arr[i])
        return ss

    mmax = sum_arr(arr)
    mlist = []

    def flip(arrx):
        global mmax
        if arrx not in mlist:
            mlist.append(arrx)
            for i in range(a):
                arr_new = deepcopy(arrx)
                arr_new[i] = [-x for x in arr_new[i]]
                if sum_arr(arr_new) > mmax:
                    mmax = sum_arr(arr_new)
                flip(arr_new)
            for j in range(b):
                arr_new = deepcopy(arrx)
                for i in range(a):
                    arr_new[i][j] = - arr_new[i][j]
                if sum_arr(arr_new) > mmax:
                    mmax = sum_arr(arr_new)
                flip(arr_new)
        return mmax

    t = flip(arr)
        
    with open("flip.out", "w+") as fout:
        fout.write("{:.0f}".format(t))