Submission #667610
Source Code Expand
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import itertools
import numpy
import sys
DS = [(1, 0), (-1, 0), (0, 1), (0, -1)]
H = 30
W = 30
class Solver(object):
def __init__(self, stage):
self.stage = stage
self.hands = None
self.init_hands()
def init_hands(self):
self.hands = []
def decrement(self, r, c):
self.hands.append((r + 1, c + 1))
self.stage[r, c] -= 1
def naive_solution(self):
for r, c in itertools.product(range(H), range(W)):
cell = self.stage[r, c]
if cell <= 0:
continue
for _ in range(cell):
self.decrement(r, c)
def search_adj(self, r0, c0):
for dr, dc in DS:
(r, c) = (r0 + dr, c0 + dc)
if r < 0 or r >= H or c < 0 or c >= W:
continue
elif 0 < self.stage[r, c] == self.stage[r0, c0]:
self.decrement(r, c)
self.search_adj(r, c)
break
def use_multiple_adj_solution(self):
for r0, c0 in itertools.product(range(H), range(W)):
if self.stage[r0, c0] <= 0:
continue
self.decrement(r0, c0)
self.search_adj(r0, c0)
self.naive_solution()
def main():
sys.setrecursionlimit(10000)
stage = numpy.array([list(map(int, input().split())) for _ in range(H)])
solver = Solver(stage)
solver.use_multiple_adj_solution()
for r, c in solver.hands:
print("{} {}".format(r, c))
if __name__ == '__main__':
main()
Submission Info
Submission Time |
|
Task |
A - 高橋君の山崩しゲーム |
User |
hamukichi |
Language |
Python (3.4.3) |
Score |
541371 |
Code Size |
1646 Byte |
Status |
AC |
Exec Time |
475 ms |
Memory |
16232 KB |
Judge Result
Set Name |
test_01 |
test_02 |
test_03 |
test_04 |
test_05 |
test_06 |
test_07 |
test_08 |
test_09 |
test_10 |
Score / Max Score |
55576 / 100000 |
53244 / 100000 |
54832 / 100000 |
51897 / 100000 |
54816 / 100000 |
54594 / 100000 |
53724 / 100000 |
55331 / 100000 |
53820 / 100000 |
53537 / 100000 |
Status |
|
|
|
|
|
|
|
|
|
|
Set Name |
Test Cases |
test_01 |
subtask_01_01.txt |
test_02 |
subtask_01_02.txt |
test_03 |
subtask_01_03.txt |
test_04 |
subtask_01_04.txt |
test_05 |
subtask_01_05.txt |
test_06 |
subtask_01_06.txt |
test_07 |
subtask_01_07.txt |
test_08 |
subtask_01_08.txt |
test_09 |
subtask_01_09.txt |
test_10 |
subtask_01_10.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask_01_01.txt |
AC |
441 ms |
15804 KB |
subtask_01_02.txt |
AC |
461 ms |
16108 KB |
subtask_01_03.txt |
AC |
459 ms |
15852 KB |
subtask_01_04.txt |
AC |
475 ms |
16232 KB |
subtask_01_05.txt |
AC |
444 ms |
15852 KB |
subtask_01_06.txt |
AC |
441 ms |
15972 KB |
subtask_01_07.txt |
AC |
455 ms |
15964 KB |
subtask_01_08.txt |
AC |
448 ms |
15852 KB |
subtask_01_09.txt |
AC |
450 ms |
16060 KB |
subtask_01_10.txt |
AC |
440 ms |
16092 KB |