목차

시장 선거 포스터

ps
링크acmicpc.net/…
출처BOJ
문제 번호2370
문제명시장 선거 포스터
레벨골드 4
분류

스위핑

시간복잡도O(nlogn)
인풋사이즈n<=10000
사용한 언어Python 3.11
제출기록41156KB / 124ms
최고기록104ms
해결날짜2023/09/20

풀이

코드

"""Solution code for "BOJ 2370. 시장 선거 포스터".

- Problem link: https://www.acmicpc.net/problem/2370
- Solution link: http://www.teferi.net/ps/problems/boj/2370

Tags: [sweeping]
"""

import collections
import sys
from teflib import priorityqueue


RIGHT = 0
LEFT = 1


def main():
    n = int(sys.stdin.readline())
    events_by_coord = collections.defaultdict(list)
    for poster_no in range(n):
        l, r = [int(x) for x in sys.stdin.readline().split()]
        events_by_coord[l].append((LEFT, poster_no))
        events_by_coord[r + 1].append((RIGHT, poster_no))

    visible_posters = set()
    heap = priorityqueue.UpdatableHeap()
    for _, events in sorted(events_by_coord.items()):
        for type_, poster_no in events:
            if type_ == LEFT:
                heap.push(-poster_no)
            else:
                heap.delete(-poster_no)
        if heap:
            visible_posters.add(heap.top())

    print(len(visible_posters))


if __name__ == '__main__':
    main()