結果
問題 | No.5002 stick xor |
ユーザー |
![]() |
提出日時 | 2018-05-26 15:38:14 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,741 bytes |
コンパイル時間 | 5,016 ms |
実行使用メモリ | 136,788 KB |
スコア | 0 |
最終ジャッジ日時 | 2018-05-26 15:38:28 |
ジャッジサーバーID (参考情報) |
judge7 / |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | TLE * 1 -- * 31 |
ソースコード
# coding: utf-8# import timefrom heapq import heappush,heappopdef evalute(grid):return sum([r.count(0) for r in grid])def operation_grid(op, grid):rev_grid = gridif op[1] == op[3]:length = op[2] - op[0] + 1for i in range(length):rev_grid[op[0]-1+i][op[1]-1] = (grid[op[0]-1+i][op[1]-1]+1)&1if op[0] == op[2]:length = op[3] - op[1] + 1for i in range(length):rev_grid[op[0]-1][op[1]-1+i] = (grid[op[0]-1][op[1]-1+i]+1)&1return rev_griddef count_black_horizon(grid, base_x, base_y, length):return grid[base_y][base_x:base_x + length].count(1)def count_black_vertical(grid, base_x, base_y, length):return [grid[i][base_x] for i in range(base_y,base_y + length)].count(1)# begin = time.time()N,K = map(int,input().split())L = list(map(int,input().split()))A = [list(map(int,list(input()))) for i in range(N)]operation = []for k in range(K):hq = []for x in range(N-L[k]+1):for y in range(N-L[k]+1):horizon_cnt = count_black_horizon(A, x, y, L[k])vertical_cnt = count_black_vertical(A, x, y, L[k])# print(horizon_cnt,end=" ")# print(vertical_cnt)if horizon_cnt < vertical_cnt:heappush(hq, (-vertical_cnt, [y+1, x+1, y+L[k], x+1]))else:heappush(hq, (-horizon_cnt, [y+1, x+1, y+1, x+L[k]]))cnt, op = heappop(hq)A = operation_grid(op, A)operation.append(op)best_score = evalute(A)print('\n'.join([' '.join(list(map(str,op))) for op in operation]))# print('best_score = ' + str(best_score))# print('----END----')# take = time.time() - begin# print(str(round(int(take * 1000),3)) + " ms")