W pewnym magicznym królestwie słów i liczb żył młody bibliotekarz Bajtazar, którego zadaniem było rozwiązywanie zagadek zapisanych w pradawnych księgach. W tej krainie panowała osobliwa magia: litery wewnątrz słowa mogły być dowolnie poprzestawiane, a mimo to każdy bez trudu je odczytywał – wystarczyło, by pierwsza i ostatnia litera pozostały na swoim miejscu.
Podobna zasada dotyczyła ciągów liczbowych. Mówiła ona, że ciąg liczb całkowitych jest czytelny wtedy, gdy jego pierwszy element jest najmniejszy w całym ciągu, a ostatni – największy. W przeciwnym razie ciąg uznaje się za nieczytelny. Na przykład ciągi [1,3,2,4] i [1,2,1,2] są czytelne, a [1,3,2] i [2,1,2] nie są.
Bajtazar odkrył jednak sposób na odczytywanie ciągów nieczytelnych. Najpierw dzieli cały ciąg liczbowy na czytelne fragmenty, następnie odczytuje każdy z nich, a potem łączy uzyskane informacje w spójną całość. Oczywiście im mniej fragmentów trzeba połączyć, tym łatwiej. Pomóż Bajtazarowi rozszyfrować treść proroctwa i napisz program, który wczyta ciąg liczbowy oraz wypisze najmniejszą liczbę czytelnych fragmentów, na jaką można go podzielić.
Wejście
W pierwszym wierszu znajduje się jedna liczba całkowita N. W drugim i ostatnim wierszu wejścia znajduje się N liczb całkowitych ai pooddzielanych pojedynczymi odstępami i oznaczających kolejne wyrazy ciągu.
Wyjście
Twój program powinien wypisać tylko jedną liczbę całkowitą – najmniejszą liczbę czytelnych fragmentów, na jaką trzeba podzielić ciąg ai.
Ograniczenia
1 ≤ N ≤ 300 000, 1 ≤ ai ≤ 109.
Podzadania
| Podzadanie | Warunki | Punkty |
|---|---|---|
| 1 | ai ≤ 2 | 8 |
| 2 | N ≤ 20 | 12 |
| 3 | N ≤ 500 | 20 |
| 4 | N ≤ 5 000 | 30 |
| 5 | brak dodatkowych ograniczeń | 30 |
Przykład
| Wejście | Wyjście | Wyjaśnienie |
|
|
Podział ciągu wygląda następująco: [2,3], [1,1,5], [1] |
| Wejście | Wyjście | Wyjaśnienie |
|
|
Podział ciągu wygląda następująco: [5], [4], [3], [2], [1] |
| Wejście | Wyjście | Wyjaśnienie |
|
|
Podział ciągu wygląda następująco: [1,3,2,4] |
Grzybiarz z Kujaw uprawia pieczarki na prostokątnym polu. Pole ma N rzędów i M kolumn. Rzędy numerowane są od 1 do N od góry do dołu. Kolumny numerowane są od 1 do M od lewej do prawej. Niech (r,k) oznacza komórkę w r-tym rzędzie i k-tej kolumnie.
W każdej komórce rośnie pieczarka. Z racji tego, że są one magiczne, to każda ma swój unikalny kolor, reprezentowany numerem od 0 do N × M − 1. Na początku w komórce (i,j) rośnie pieczarka w kolorze Ai, j.
Grzybiarz może przeprowadzać różne operacje na swoim polu. Łącznie zrobi ich Q. Operacje są następujących typów:
- 1 R1 C1 R2 C2 – zamiana miejscami pieczarek w komórkach (R1,C1) i (R2,C2).
- 2 W – każda pieczarka zmienia kolor z x na (x+W) mod (N⋅M).
- 3 R1 C1 R2 C2
– Grzybiarz pyta: jaki jest najmniejszy numer koloru, który nie
występuje w żadnej komórce (r,k) która spełnia R1 ≤ r ≤ R2
i C1 ≤ k ≤ C2?
Jeśli wszystkie kolory występują, wypisz
-1.
Wejście
Pierwsza linia zawiera dwie liczby całkowite N i M – wymiary pola. Kolejne N linii zawierają po M liczb całkowitych – początkowe kolory pieczarek. Następna linia zawiera liczbę Q – liczbę zdarzeń. Kolejne Q linii opisują zdarzenia w formacie opisanym wyżej.
Wyjście
Dla każdego zdarzenia typu 3 wypisz w osobnej linii najmniejszy numer
koloru, który nie występuje w zadanym prostokącie, lub -1,
jeśli wszystkie kolory w nim występują.
Ograniczenia
1 ≤ N, M ≤ 500, 0 ≤ Ai, j ≤ N ⋅ M − 1, 1 ≤ Q ≤ 100 000.
Każda liczba od 0 do N ⋅ M − 1 występuje dokładnie raz w początkowej konfiguracji.
Dla zdarzenia typu 1: 1 ≤ R1, R2 ≤ N, 1 ≤ C1, C2 ≤ M.
Dla zdarzenia typu 2: 1 ≤ W ≤ N ⋅ M − 1.
Dla zdarzenia typu 3: 1 ≤ R1 ≤ R2 ≤ N, 1 ≤ C1 ≤ C2 ≤ M.
Jest przynajmniej jedno zdarzenie typu 3.
Podzadania
| Podzadanie | Warunki | Punkty |
|---|---|---|
| 1 | maksymalnie 10 zdarzeń typu 2 i 10 zdarzeń typu 3 | 9 |
| 2 | maksymalnie 10 zdarzeń typu 3 | 10 |
| 3 | brak zdarzeń typu 2; każde zdarzenie typu 3 obejmuje prostokąt od pierwszego do połowy wierszy: (1,1,⌈N/2⌉,M) | 15 |
| 4 | każde zdarzenie typu 3 obejmuje prostokąt od pierwszego do połowy wierszy: (1,1,⌈N/2⌉,M) | 8 |
| 5 | brak zdarzeń typu 1 i 2 | 28 |
| 6 | brak zdarzeń typu 2 | 23 |
| 7 | brak dodatkowych ograniczeń | 7 |
Przykład
| Wejście | Wyjście | Wyjaśnienie |
|
|
Po trzech pierwszych zdarzeniach pole
wygląda następująco:
|
Po posprzątaniu swojego pokoju, Jasiu postanowił ułożyć swoje maskotki w kolejności tego, jak bardzo je lubi. Zmiany będzie dokonywał poprzez przestawienie maskotek na swojej półce.
Pojawił się jednak problem: Jeśli Jasiu zamieni dwie maskotki miejscami, to od razu będzie widać, że jedną faworyzuje i tej drugiej zrobi się smutno. Postanowił on zatem posłużyć się podstępem – zamiast zamieniać miejscami dwie maskotki, będzie obracał cyklicznie trzy maskotki. Oznacza to, że jeśli są trzy parami różne maskotki A, B i C, to może tak zrobić, żeby A stała na starej pozycji B, B na starej pozycji C, a C na starej pozycji A. Pozycje innych maskotek nie ulegają zmianie.
Ponieważ każda maskotka jest inna, Jasiu przypisał każdej z nich unikalną liczbę wi oznaczającą, jak bardzo lubi daną maskotkę. Pomóż mu i powiedz, czy za pomocą wyżej opisanego podstępu jest w stanie ustawić maskotki w kolejności malejącej po poziomie lubienia, a jeżeli tak to powiedz mu, ile oraz jakie podstępy musi wykonać.
Wejście
W pierwszym wierszu wejścia znajduje się jedna liczba całkowita N oznaczająca liczbę maskotek Jasia. W następnym wierszu znajduje się N liczb wi oznaczających wartości maskotek. Liczby te są parami różne.
Wyjście
W pierwszym wierszu wyjścia powinno znaleźć się jedno słowo
TAK lub NIE, oznaczające odpowiednio, że Jasiu
może lub nie może za pomocą jakiejś liczby podstępów ustawić maskotki w
zadanej kolejności. Jeżeli odpowiedź brzmi TAK, to w drugim
wierszu wyjścia powinna być jedna liczba całkowita K, oznaczająca minimalną liczbę
podstępów koniecznych, aby uporządkować jego maskotki na półce. W
kolejnych K wierszach powinny
widnieć trójki liczb ai, bi oraz ci, oznaczające
pozycje maskotek A, B i C w i-tym podstępie. Pozycje liczymy od
1. Jeżeli odpowiedź brzmi
NIE, to na wyjściu nie powinno być kolejnych wierszy.
Ograniczenia
1 ≤ N ≤ 106, − 109 ≤ wi ≤ 109, 0 ≤ K ≤ 5 ⋅ 106.
Podzadania
| Podzadanie | Warunki | Punkty |
|---|---|---|
| 1 | N ≤ 6 | 10 |
| 2 | N ≤ 500 | 20 |
| 3 | N ≤ 5 000 | 20 |
| 4 | N ≤ 50 000 | 20 |
| 5 | brak dodatkowych ograniczeń | 30 |
Rozwiązania częściowe mogą otrzymać różną część punktów na różnych podzadaniach:
- Za rozwiązanie wypisujące wyłącznie pierwszy wiersz poprawnie przyznawane będzie 10% punktów.
- Za rozwiązanie wypisujące pierwsze dwa wiersze poprawnie z optymalną wartością K przyznawane będzie 30% punktów.
- Za rozwiązanie wypisujące poprawne wyjście z nieoptymalną wartością K, która spełnia warunek K ≤ 4 ⋅ N + 1 000 przyznawane będzie 50% punktów.
Rozwiązanie zawsze powinno wypisać poprawny ciąg operacji, choć niekoniecznie taki, który sortuje wejście.
Przykład
| Wejście | Wyjście | Wyjaśnienie |
|
|
Pierwsze trzy wartości możemy ustawić malejąco jednym podstępem, tak samo kolejne trzy. Jest to minimalny wynik, ponieważ jeden podstęp wpływa na co najwyżej trzy wartości, a tutaj wszystkie sześć jest nie na swoich miejscach. |
| Wejście | Wyjście | Wyjaśnienie |
|
|
Nie można wykonać podstępu (ponieważ nie ma trzech maskotek, a maskotki do podstępu muszą być parami różne), a ciąg nie jest uporządkowany malejąco, zatem nie da się go uporządkować. |
| Wejście | Wyjście | Wyjaśnienie |
|
|
Od razu widać, że za pomocą jednego
podstępu można uporządkować ciąg. Zauważ, że osoby brane do podstępu nie
muszą być tuż obok siebie. Nie ma też żadnych wymogów co do kolejności
wypisywanych osób; poprawnymi trzecimi wierszami wyjścia byłyby również
|