Zbiory 1

시간 제한20초메모리 제한2048 MB

요약
집합 A_1부터 A_n은 각 인덱스의 배수들을 원소로 가지고, 이후 집합은 합집합, 교집합, 여집합 연산으로 만들어지며, 질의는 v가 집합 x에 속하는지 묻는다.
난이도

보통10점 중 7점

유형
비트 연산, 수학, 정수론, 시뮬레이션
정답자
아직 제출이 없습니다

문제

W tym zadaniu będziemy rozpatrywać ciąg n+mn + m podzbiorów zbioru 1,…,n\\{1, \dots , n\\}. Zbiory A_1,…,A_nA\_1, \dots , A\_n są zdefiniowane następująco: wartość 1≤i≤n1 ≤ i ≤ n należy do zbioru A_jA\_j wtedy i tylko wtedy, gdy ii jest podzielne przez jj.

Przykładowo dla n=7n = 7 kolejne zbiory są następujące:

  • A_1=1,2,3,4,5,6,7A\_1 = \\{1, 2, 3, 4, 5, 6, 7\\}
  • A_2=2,4,6A\_2 = \\{2, 4, 6\\}
  • A_3=3,6A\_3 = \\{3, 6\\}
  • A_4=4A\_4 = \\{4\\}
  • A_5=5A\_5 = \\{5\\}
  • A_6=6A\_6 = \\{6\\}
  • A_7=7A\_7 = \\{7\\}

Kolejnych mm zbiorów – A_n+1,A_n+2,…,A_n+mA\_{n+1}, A\_{n+2}, \dots , A\_{n+m} – powstaje przez operacje sum, przecięć lub negacji na poprzednich zbiorach.

  • Operacja sumy zbiorów A_iA\_i oraz A_jA\_j (oznaczana przez A_i∪A_jA\_i ∪ A\_j) tworzy zbiór zawierający wszystkie liczby należące do któregokolwiek z A_iA\_i lub A_jA\_j.
  • Operacja przecięcia zbiorów A_iA\_i oraz A_jA\_j (oznaczana przez A_i∩A_jA\_i ∩ A\_j) tworzy zbiór zawierający wszystkie liczby należące do obu A_iA\_i oraz A_jA\_j.
  • Operacja negacji zbioru A_iA\_i (oznaczana przez A′_iA'\_i) tworzy zbiór zawierający wszystkie liczby całkowite 1≤j≤n1 ≤ j ≤ n, które nie należą do A_iA\_i.

Przykładowy ciąg operacji może wyglądać następująco:

  • A_8=A_5∪A_7=5,7A\_8 = A\_5 ∪ A\_7 = \\{5, 7\\}
  • A_9=A_2∩A_3=6A\_9 = A\_2 ∩ A\_3 = \\{6\\}
  • A_10=A′_8=1,2,3,4,6A\_{10} = A'\_8 = \\{1, 2, 3, 4, 6\\}
  • A_11=A_10∩A_8=;A\_{11} = A\_{10} ∩ A\_8 = \\{\\};
  • A_12=A′_3=1,2,4,5,7A\_{12} = A'\_3 = \\{1, 2, 4, 5, 7\\}
  • A_13=A_12∪A_12=1,2,4,5,7A\_{13} = A\_{12} ∪ A\_{12} = \\{1, 2, 4, 5, 7\\}
  • A_14=A_10∩A_13=1,2,4A\_{14} = A\_{10} ∩ A\_{13} = \\{1, 2, 4\\}
  • A_15=A_9∪A_14=1,2,4,6A\_{15} = A\_9 ∪ A\_{14} = \\{1, 2, 4, 6\\}

Mając dane nn, mm oraz listę operacji tworzących zbiory, odpowiedz na qq zapytań postaci: czy dana liczba vv należy do danego zbioru A_xA\_x.

입력

W pierwszym wierszu wejścia znajdują się trzy liczby całkowite nn, mm, qq (1≤n≤50,0001 ≤ n ≤ 50\\, 000, 1≤m≤400,0001 ≤ m ≤ 400\\, 000, 1≤q≤1,000,0001 ≤ q ≤ 1\\, 000\\, 000), oznaczające odpowiednio liczbę początkowych zbiorów, liczbę operacji oraz liczbę zapytań.

Kolejne mm wierszy zawierają opisy operacji. Wiersz numer ii opisujący w jaki sposób powstał zbiór A_n+iA\_{n+i}, jest w jednej z trzech postaci:

  • 1 xx yy – oznaczającej operację sumy A_n+i=A_x∪A_yA\_{n+i} = A\_x ∪ A\_y,
  • 2 xx yy – oznaczającej operację przecięcia A_n+i=A_x∩A_yA\_{n+i} = A\_x ∩ A\_y,
  • 3 xx – oznaczającej operację negacji A_n+i=A′_xA\_{n+i} = A'\_x.

W każdej z tych postaci wartości xx, yy spełniają warunek 1≤x,y<n+i1 ≤ x, y < n + i, tzn. każda operacja odwołuje się tylko do poprzednich zbiorów.

Kolejne qq wierszy zawiera zapytania. Każdy z nich zawiera dwie liczby całkowite xx oraz vv (1≤x≤n+m1 ≤ x ≤ n + m, 1≤v≤n1 ≤ v ≤ n), które oznaczają pytanie o to, czy v∈A_xv ∈ A\_x.

출력

Na wyjście należy wypisać qq wierszy zawierających odpowiedzi na kolejne zapytania. Każdy z wierszy ma zawierać jedno ze słów TAK lub NIE. Słowo TAK oznacza, że v∈A_xv ∈ A\_x dla odpowiednich xx, vv, zaś słowo NIE oznacza, że v∉A_xv \not\in A\_x.

힌트

Wyjaśnienie przykładu: Test przykładowy odpowiada przykładowym operacjom opisanym w treści zadania.

예제1

  1. 예제 1

    입력
    7 8 9
    1 5 7
    2 2 3
    3 8
    2 10 8
    3 3
    1 12 12
    2 10 13
    1 9 14
    2 4
    5 7
    11 5
    15 1
    15 2
    15 3
    15 4
    15 5
    15 6
    
    예상 출력
    TAK
    NIE
    NIE
    TAK
    TAK
    NIE
    TAK
    NIE
    TAK