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

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

교환

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

요약
주어진 선택 정렬의 앞 M개 패스가 수행하는 교환 횟수를 테스트 케이스마다 구합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 정렬, 시뮬레이션
정답자
아직 제출이 없습니다

문제

길이가 NN인 배열 AA와 정수 MM이 주어진다. 지학이는 다음 프로그램을 짰다.

for i <- 1 to M do
    for j <- i+1 to N do
        if A[i] > A[j] then
            swap(A[i], A[j])

배열의 첨자는 1부터 시작하고, swap(A[i], A[j])는 두 원소의 값을 맞바꾼다. 이 프로그램이 끝날 때까지 swap이 몇 번 호출되는지 구하라.

입력

입력은 여러 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에 자연수 NN과 MM이 주어진다. (1≤N,M≤999991 \le N, M \le 99999)

둘째 줄에 배열 AA의 원소 A[1],A[2],…,A[N]A[1], A[2], \dots, A[N]이 공백으로 구분되어 주어진다. (−109≤A[i]≤109-10^9 \le A[i] \le 10^9)

입력은 파일의 끝까지 이어지고, 테스트 케이스는 최대 20개다.

출력

각 테스트 케이스마다 swap이 호출된 횟수를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    3 3
    2 1 3
    4 1
    3 2 -1 -10
    
    예상 출력
    1
    3
    
  2. 예제 2

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

    입력
    6 6
    6 5 4 3 2 1
    
    예상 출력
    15