답안 #897999

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
897999 2024-01-04T07:04:09 Z shrek27 Spiral (BOI16_spiral) Python 3
0 / 100
1500 ms 3164 KB
def number(x, y):
    if x == y and x >= 0:
        num = 1 + (2 * x - 1) * 2 * x
    elif x == y and x < 0:
        x = abs(x)
        num = 1 + (2 * x + 1) * 2 * x
    elif y == -x and x < 0:
        x = abs(x)
        num = 1 + 4 * x ** 2
    elif y == -x + 1 and x >=1:
        num = 1 + (2 * x ** 2 - 1)

    elif y > x and y > -x:
        num = number(y, y) + y - x

    elif y < x and y > -x + 1:
        num = number(x, x) + y - x

    elif y < -x + 1 and y < x:
        num = number(y, y) + x - y

    elif y < -x and y > x:
        num = number(x, x) + x - y

    return num


def intersection(x1, y1, x2, y2):
    pass

def func(x1, y1, x2, y2):
    count = 0
    for x in range(x1, x2 + 1):
        if x <= 0:
            a = min(-x, y2)
            b = max(x, y1)
        if x > 0:
            a = min(x, y2)
            b = max(-x + 1, y1)
        if a >= b:
            a = number(x, a)
            b = number(x, b)
            # print('x, a, b', x, a, b)
            # print((a + b) * (abs(a - b) + 1) // 2)
            # print(' ')
            count += (a + b) * (a - b + 1) // 2
            # count = count % (10 ** 9 + 7)

    for y in range(y1, y2 + 1):
        if y <= 0:
            a = max(x1, y + 1)
            b = min(x2, -y)

        if y > 0:
            a = max(x1, -y + 1)
            b = min(x2, y - 1)
        if a <= b:
            a = number(a, y)
            b = number(b, y)
            # print('y, a, b', y, a, b)
            # print((a + b) * (b - a + 1) // 2)
            # print(' ')
            count += (a + b) * (b - a + 1) // 2
            # count = count % (10 ** 9 + 7)

    return count


n, q = input().split(' ')
n, q = int(n), int(q)

for i in range(q):
    x = input()
    x1, y1, x2, y2 = x.split(' ')
    x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
    ar = func(x1, y1, x2, y2)
    print(ar)
# 결과 실행 시간 메모리 Grader output
1 Incorrect 216 ms 3164 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 12 ms 3164 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 216 ms 3164 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1527 ms 3164 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 216 ms 3164 KB Output isn't correct
2 Halted 0 ms 0 KB -