만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

역전쌍

시간 제한2초메모리 제한512 MB

요약
길이 n의 수열에서 0으로 표시된 빈칸을 1부터 k까지의 값으로 채워 역전 쌍의 수를 최대로 만드는 문제입니다.
난이도

보통10점 중 5점

유형
배열, 동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

길이가 nn인 정수 수열이 주어집니다. 각 원소는 11 이상 kk 이하입니다. 일부 정수는 값을 모르며 00으로 표시되어 있습니다.

역전쌍은 위치 ii와 jj의 쌍으로, i<ji<j이고 ai>aja_i > a_j를 만족합니다. 빈칸을 모두 11 이상 kk 이하의 정수로 채울 때, 가능한 역전쌍의 최대 개수를 구하세요.

입력

첫 줄에 정수 nn (1≤n≤200,0001 \le n \le 200{,}000)과 kk (1≤k≤1001 \le k \le 100)가 공백으로 구분되어 주어집니다. nn은 수열의 길이이고, kk는 원소의 최댓값입니다. 이어지는 nn개의 줄에는 수열의 원소 xx (0≤x≤k0 \le x \le k)가 순서대로 한 줄에 하나씩 주어집니다. 00은 빈칸을 뜻합니다.

출력

가능한 역전쌍의 최대 개수를 정수 하나로 출력하세요.

힌트

첫 번째 예에서 00을 다음과 같이 채우면

9 8 4 3 2 1

수열의 모든 쌍이 역전쌍이 되어 총 15개입니다.

예제3

  1. 예제 1

    입력
    6 9
    0
    8
    4
    3
    0
    0
    
    예상 출력
    15
    
  2. 예제 2

    입력
    10 9
    5
    2
    9
    0
    7
    4
    8
    7
    0
    0
    
    예상 출력
    28
    
  3. 예제 3

    입력
    10 9
    7
    4
    0
    0
    8
    5
    0
    0
    3
    1
    
    예상 출력
    36