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

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

Järjestamine

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

요약
전체 구간을 통째로 재배열해 정렬된 배열을 얻을 수 있도록, 배열을 나누는 최소 구간 수를 구한다.
난이도

보통10점 중 7점

유형
정렬, 배열, 해시맵, 그리디
정답자
아직 제출이 없습니다

문제

Nimetame arvujada A_1,A_2,…,A_NA\_1, A\_2, \dots, A\_N järjestatuks, kui iga 1≤i<N1 \le i < N korral kehtib A_i≤A_i+1A\_i \le A\_{i+1}.

Vaatleme järgmist meetodit arvujada järjestamiseks: kõigepealt tükeldatakse jada MM lõiguks (jada esimesed k_1k\_1 elementi moodustavad ühe lõigu, järgmised k_2k\_2 elementi teise j.n.e kuni viimased k_Mk\_M elementi moodustavad viimase lõigu) ja edasi tohib omavahel vahetada terveid lõike, aga mitte muuta elementide järjekorda ühegi lõigu sees.

On selge, et mõnede lõikudeks jaotuste korral on jada järjestamine lõikude vahetamise teel võimalik (kindlasti saab iga NN-elemendilise jada järjestada selle NN lõiguks tükeldamise järel) ja mõnede korral ei ole (näiteks üheks lõiguks "tükeldamisel" ei saa järjestada ühtki jada, mis pole juba algselt järjestatud).

Kirjutada programm, mis leiab antud jada jaoks vähima arvu MM, mille korral leidub selline jada tükeldus MM lõiguks, et terve jada saab lõikude vahetamise teel järjestada.

입력

Tekstifaili esimesel real on jada elementide arv NN (1≤N≤500,0001 \le N \le 500\\,000) ja teisel real NN tühikutega eraldatud täisarvu: jada elemendid A_iA\_i (1≤A_i≤N1 \le A\_i \le N).

출력

Tekstifaili ainsale reale väljastada üks täisarv: minimaalne lõikude arv, milleks peab jada tükeldama, et selle saaks lõikude vahetamise teel järjestada.

예제2

  1. 예제 1

    입력
    6
    5 6 4 3 1 2
    
    예상 출력
    4
    
  2. 예제 2

    입력
    3
    1 2 1
    
    예상 출력
    2