Submission #8004974


Source Code Expand

#!/usr/bin/env python3
import random

def copysign(x, y):
    return abs(x) * (1 if y >= 0 else - 1)

def dist(k, x, y):
    if not (abs(x) + abs(y) < 2 * k):
        return None
    if x == y == 0:
        return 0
    elif abs(x) + abs(y) == k:
        return 1
    elif (abs(x) + abs(y)) % 2 == 0:
        return 2
    else:
        return 3

def iterate_neighbors(k, x, y):
    assert abs(x) + abs(y) < 2 * k
    dz = (2 * k - abs(x) - abs(y)) // 2
    for dx in (dz, k - dz):
        dy = k - dx
        yield (dx, dy)
        yield (dx, - dy)
        yield (- dx, dy)
        yield (- dx, - dy)

def solve(k, x, y):
    while True:
        d = dist(k, x, y)
        if d == 0:
            return
        elif d == 1:
            dx = x
            dy = y
        elif d == 2:
            for dx, dy in iterate_neighbors(k, x, y):
                if dist(k, x - dx, y - dy) == 1:
                    break
            else:
                assert False
        elif d == 3:
            while True:
                dx = random.randint(0, k) * random.choice([-1, 1])
                dy = (k - abs(dx)) * random.choice([-1, 1])
                if dist(k, x - dx, y - dy) == 2:
                    break
        else:
            dx = copysign(min(k, abs(x)), x)
            dy = copysign(k - abs(dx), y)
        yield (dx, dy)
        x -= dx
        y -= dy

def main():
    k = int(input())
    x, y = map(int, input().split())
    if k % 2 == 0 and (abs(x) + abs(y)) % 2 != 0:
        print(-1)
        return
    ops = list(solve(k, x, y))
    print(len(ops))
    x = 0
    y = 0
    for dx, dy in ops:
        x += dx
        y += dy
        print(x, y)

main()

Submission Info

Submission Time
Task E - Golf
User kimiyuki
Language Python (3.4.3)
Score 500
Code Size 1669 Byte
Status AC
Exec Time 477 ms
Memory 20100 KiB

Judge Result

Set Name Sample Subtask1
Score / Max Score 0 / 0 500 / 500
Status
AC × 3
AC × 55
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.txt, sample_03.txt, sub1_01.txt, sub1_02.txt, sub1_03.txt, sub1_04.txt, sub1_05.txt, sub1_06.txt, sub1_07.txt, sub1_08.txt, sub1_09.txt, sub1_10.txt, sub1_11.txt, sub1_12.txt, sub1_13.txt, sub1_14.txt, sub1_15.txt, sub1_16.txt, sub1_17.txt, sub1_18.txt, sub1_19.txt, sub1_20.txt, sub1_21.txt, sub1_22.txt, sub1_23.txt, sub1_24.txt, sub1_25.txt, sub1_26.txt, sub1_27.txt, sub1_28.txt, sub1_29.txt, sub1_30.txt, sub1_31.txt, sub1_32.txt, sub1_33.txt, sub1_34.txt, sub1_35.txt, sub1_36.txt, sub1_37.txt, sub1_38.txt, sub1_39.txt, sub1_40.txt, sub1_41.txt, sub1_42.txt, sub1_43.txt, sub1_44.txt, sub1_45.txt, sub1_46.txt, sub1_47.txt, sub1_48.txt, sub1_49.txt, sub1_50.txt, sub1_51.txt, sub1_52.txt
Case Name Status Exec Time Memory
sample_01.txt AC 29 ms 3952 KiB
sample_02.txt AC 21 ms 3444 KiB
sample_03.txt AC 21 ms 3444 KiB
sub1_01.txt AC 20 ms 3444 KiB
sub1_02.txt AC 20 ms 3444 KiB
sub1_03.txt AC 21 ms 3444 KiB
sub1_04.txt AC 20 ms 3444 KiB
sub1_05.txt AC 20 ms 3444 KiB
sub1_06.txt AC 20 ms 3444 KiB
sub1_07.txt AC 20 ms 3444 KiB
sub1_08.txt AC 20 ms 3444 KiB
sub1_09.txt AC 21 ms 3444 KiB
sub1_10.txt AC 21 ms 3444 KiB
sub1_11.txt AC 21 ms 3444 KiB
sub1_12.txt AC 20 ms 3444 KiB
sub1_13.txt AC 20 ms 3444 KiB
sub1_14.txt AC 21 ms 3444 KiB
sub1_15.txt AC 21 ms 3444 KiB
sub1_16.txt AC 25 ms 3956 KiB
sub1_17.txt AC 20 ms 3444 KiB
sub1_18.txt AC 21 ms 3444 KiB
sub1_19.txt AC 21 ms 3444 KiB
sub1_20.txt AC 41 ms 4488 KiB
sub1_21.txt AC 21 ms 3444 KiB
sub1_22.txt AC 20 ms 3444 KiB
sub1_23.txt AC 21 ms 3444 KiB
sub1_24.txt AC 25 ms 3956 KiB
sub1_25.txt AC 21 ms 3444 KiB
sub1_26.txt AC 21 ms 3444 KiB
sub1_27.txt AC 21 ms 3444 KiB
sub1_28.txt AC 29 ms 4116 KiB
sub1_29.txt AC 20 ms 3444 KiB
sub1_30.txt AC 21 ms 3444 KiB
sub1_31.txt AC 21 ms 3444 KiB
sub1_32.txt AC 21 ms 3444 KiB
sub1_33.txt AC 29 ms 4152 KiB
sub1_34.txt AC 477 ms 20100 KiB
sub1_35.txt AC 20 ms 3444 KiB
sub1_36.txt AC 21 ms 3444 KiB
sub1_37.txt AC 20 ms 3444 KiB
sub1_38.txt AC 21 ms 3444 KiB
sub1_39.txt AC 28 ms 4084 KiB
sub1_40.txt AC 21 ms 3444 KiB
sub1_41.txt AC 21 ms 3444 KiB
sub1_42.txt AC 21 ms 3444 KiB
sub1_43.txt AC 21 ms 3444 KiB
sub1_44.txt AC 20 ms 3444 KiB
sub1_45.txt AC 21 ms 3444 KiB
sub1_46.txt AC 24 ms 3828 KiB
sub1_47.txt AC 193 ms 9252 KiB
sub1_48.txt AC 21 ms 3444 KiB
sub1_49.txt AC 20 ms 3444 KiB
sub1_50.txt AC 21 ms 3444 KiB
sub1_51.txt AC 184 ms 9252 KiB
sub1_52.txt AC 21 ms 3444 KiB