아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

자물쇠공

시간 제한1초메모리 제한1024 MB

요약
여러 개의 등차수열(a mod b)이 삽입과 삭제로 바뀌는 상황에서, 특정 자물쇠 번호가 현재 활성 수열 중 하나에 속하는지 판정한다.
난이도

어려움10점 중 8점

유형
수학, 정수론, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

자물쇠공 Lårs는 Mattelandet의 자물쇠에 열쇠를 나눠 주는 일을 맡게 되었다. 나라에는 NN개의 자물쇠가 있고, 각각 1,2,…,N1,2,\ldots,N으로 번호가 매겨져 있다. 주민마다 자기 열쇠를 가지고 있고, 그 열쇠로 나라의 자물쇠 중 일부(자기가 열 권한이 있는 자물쇠)를 열 수 있다.

누군가 나라로 이사 올 때마다 Lårs는 두 수 a,ba,b로 이루어진 열쇠를 준다. 그러면 그 사람은 m≡a(modb)m\equiv a \pmod{b}를 만족하는 번호 mm의 모든 자물쇠를 열 수 있다. (여기서 ≡\equiv는 합동을 나타낸다. 두 수 x,yx,y가 법 nn에 대해 합동이라는 것은 x≡y(modn)x\equiv y \pmod{n}으로 쓰고, n∣(x−y)n|(x-y) 즉 x−yx-y가 nn으로 나누어떨어진다는 뜻이다. 이는 xx와 yy를 nn으로 나눈 나머지가 같다는 것과 같다. 대부분의 프로그래밍 언어에서는 x%n==y%nx\%n==y\%n으로 쓸 수 있다.) 누군가 나라에서 이사 나가면 Lårs는 그 열쇠를 회수한다.

자물쇠 담당자로서 Lårs가 처리해야 하는 사건은 세 가지다. 어떤 주민이 특정 자물쇠를 열 수 있는지 묻는 질문, 누군가 나라로 이사 오는 일, 누군가 나라에서 이사 나가는 일이다. 어떤 주민이 특정 자물쇠를 열 수 있는지 묻는 질문마다 Lårs는 "ja" 또는 "nej"로 답해야 한다. 처음에는 아무도 나라에 살지 않는다.

입력

첫째 줄에는 두 정수 N,QN,Q가 주어진다. 이는 자물쇠의 수와 사건의 수다 (1≤N,Q≤2⋅1051\leq N,Q \leq 2\cdot 10^5).

이어서 QQ개의 줄이 다음 중 한 형태로 주어진다.

  • 1x1\enspace x: 어떤 주민이 자물쇠 xx를 열 수 있는지 묻는 질문이다 (1≤x≤N1\leq x \leq N).
  • 2ab2\enspace a\enspace b: 누군가 나라로 이사 오고, 위에서 설명한 대로 동작하는 열쇠 a,ba,b를 받는다 (0≤a<b≤N0\leq a < b \leq N).
  • 3ab3\enspace a\enspace b: 열쇠 a,ba,b를 가진 사람이 나라에서 이사 나가고 Lårs가 그 열쇠를 회수한다. 열쇠 a,ba,b를 가진 사람이 이전에 나라로 이사 온 적이 있음이 보장된다 (0≤a<b≤N0\leq a < b \leq N).

출력

어떤 주민이 특정 자물쇠를 열 수 있는지 묻는 질문(첫 번째 수가 1인 줄)마다, 현재 나라에 사는 주민 중 그 자물쇠를 열 수 있는 사람이 있으면 "ja"를, 없으면 "nej"를 출력한다.

힌트

첫 번째 예시에서는 처음에 열쇠가 하나도 없으므로 자물쇠 77을 열 수 없다. 그다음 m≡1(mod  3)m\equiv 1 (\mod 3)인 모든 정수 mm이 자물쇠를 열게 하는 열쇠가 추가되므로 자물쇠 77을 열 수 있다. 마지막으로 열쇠가 제거되면 자물쇠 77을 다시 열 수 없다.

두 번째 예시에서는 똑같은 열쇠가 두 개 발급된다. 그중 하나를 다시 회수해도 자물쇠 77은 여전히 열 수 있다(즉, 똑같은 열쇠를 한꺼번에 모두 회수하지는 않는다).

예제4

  1. 예제 1

    입력
    10 5
    1 7
    2 1 3
    1 7
    3 1 3
    1 7
    
    예상 출력
    nej
    ja
    nej
    
  2. 예제 2

    입력
    7 7
    1 7
    2 1 3
    1 7
    2 1 3
    1 7
    3 1 3
    1 7
    
    예상 출력
    nej
    ja
    ja
    ja
    
  3. 예제 3

    입력
    20 8
    2 2 3
    2 0 2
    1 7
    1 8
    1 9
    3 0 2
    1 8
    1 5
    
    예상 출력
    nej
    ja
    nej
    ja
    ja
    
  4. 예제 4

    입력
    200000 7
    1 200000
    2 2 3
    1 200000
    2 0 1
    1 200000
    3 2 3
    1 200000
    
    예상 출력
    nej
    ja
    ja
    ja