사이클 시프트와 최소 역전 수
시간 제한2초메모리 제한512 MB
순열에 부분 배열 순환 이동 갱신을 적용한 뒤마다, 순환 회전의 역전 수가 가장 작아지는 가장 작은 이동량 k를 출력한다.
문제
수열 의 사이클 시프트란 () 위치만큼 밀어 얻은 다음 수열 을 말한다. 인덱스는 0부터 시작한다. 예를 들어 0 위치만큼의 사이클 시프트는 원래 수열과 같다.
처음에 항등 순열 ()인 순열이 있다.
다음과 같은 질의를 여러 번 처리한다. 순열의 부분 배열을 어떤 위치 수만큼 사이클 시프트한 것으로 교체한다. 형식적으로 가 주어지며 , 이고, 인덱스 과 사이의 부분 배열(반열린 구간, 번째 원소는 포함하고 번째는 포함하지 않음)을 위치만큼 사이클 시프트한 것으로 교체한다. 예를 들어 순열 에 로 이 연산을 적용하면 순열 가 된다.
각 질의 후에 역전 수가 최소인 순열의 사이클 시프트를 구한다.
순열의 변경은 유지되며 질의 사이에 되돌려지지 않는다.
입력
첫째 줄에 두 정수 과 ()가 주어진다. 이는 각각 순열의 길이와 질의의 수이다.
다음 개의 줄이 주어진다. 번째 줄에는 세 정수 ()가 주어지며, 이는 번째 질의의 매개변수이다.
출력
개의 줄을 출력한다. 번째 줄에는 처음 개의 질의를 처리한 후의 순열을 () 위치만큼 사이클 시프트한 것 중 역전 수가 최소인 를 출력한다. 가능한 가 여러 개라면 가장 작은 것을 출력한다.
힌트
첫 번째 예시에서 수정 후 순열은 이다. 역전 수가 최소인 사이클 시프트는 이다.