A. Park Lighting

문제

예시

[input]
5
1 1
1 3
2 2
3 3
5 3

[output]
1
2
2
5
8

답1 – 이곳을 클릭하면 정답이 보입니다
def answer(r, c):
  if c%2 == 0: return (c//2)*r
  if r%2 == 0: return (r//2)*c
  if r == 1: return c//2 + 1
  if c == 1: return r//2 + 1
  return ((c-1)//2)*r + (r//2)+1

  
testCount = int(input())
for _ in range(testCount):
  r, c = map(int, input().split())
  print(answer(r, c))
답2 – 이곳을 클릭하면 정답이 보입니다

설명

B. Maria Breaks the Self-isolation

문제

예시

[input]
4
5
1 1 2 2 1
6
2 3 4 5 6 7
6
1 5 4 5 1 9
5
1 2 3 5 6

[output]
6
1
6
4

답1 – 여기를 클릭하면 정답이 보입니다
def answer(arr):
  arr.sort()
  outside = 0
  waiting = 1
  for i in range(len(arr)):
    if arr[i] <= outside + waiting:
      outside += waiting
      waiting = 1
    else:
      waiting += 1
  return outside + 1
      
  
testCount = int(input())
for _ in range(testCount):
  n = int(input())
  arr = list(map(int, input().split()))
  print(answer(arr))
답2 – 여기를 클릭하면 정답이 보입니다

설명

C. Celex Update

문제

예시

[input]
4
1 1 2 2
1 2 2 4
179 1 179 100000
5 7 5 7

[output]
2
3
1
1

답1 – 여기를 클릭하면 정답이 보입니다
def sigma(x):
  return (x*(x+1))//2

def answer(arr):
  a, b, c, d = arr
  r = c - a + 1
  c = d - b + 1
  _max = min(r, c)-1
  if r == c:
    return _max + sigma(_max-1)*2 + 1
  else:
    return (max(abs(r-c)-1, 0)*_max) + sigma(_max)*2 + 1

  
testCount = int(input())
for _ in range(testCount):
  arr = list(map(int, input().split()))
  print(answer(arr))
답2 – 여기를 클릭하면 정답이 보입니다

설명