만드는 중입니다

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

데산트

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

요약
순열 a에서 n명 중 k명을 골라 선택된 부분수열의 역순서쌍이 가장 적게 만들고, 각 k마다 최솟값과 그 경우의 수를 구합니다.
난이도

어려움10점 중 9점

유형
분할 정복, 조합론, 동적 계획법
정답자
아직 제출이 없습니다

문제

오랜 세월 비토시아는 바이토시아를 정기적으로 습격해 자연 자원과 지적 자산을 빼앗아 왔다. 이번에는 바이토시아인이 교활한 비토시아 민족을 먼저 공격한다. 치밀하게 짜인 전략의 첫 단계는 비토바이타나 해변에 대한 상륙이다.

작전은 은밀하게 진행되어야 하므로, 정예 부대 바이토그롬의 대원 정확히 kk명으로 구성된 분대를 해변으로 보낸다. 현재 부대에는 nn명의 병사가 있으며, 1부터 nn까지 번호가 붙어 있다. ii번 병사의 근접 전투 수준은 ii이고, 원거리 전투 수준은 aia_i이다. 수열 a1,…,ana_1, \ldots, a_n은 1부터 nn까지의 순열이다. 수준이 높을수록 그 분야에서 더 숙련된 병사이다.

잘 운영되는 특수 부대에서는 누구의 명령을 따르고 누구에게 명령할 수 있는지를 모두가 알아야 한다. 두 병사 ii와 jj가 모두 작전에 나가고 i<ji < j이며 ai>aja_i > a_j이면, 둘 사이에 마찰이 생길 수 있다. 두 병사는 바이토그롬에서 누가 더 높은지를 두고 다투게 된다.

상륙을 위해 kk명을 고를 때, 마찰이 생길 수 있는 쌍의 수가 최소가 되도록 골라야 한다. 그 최소 쌍의 수를 구하라. 또한 이 최소를 달성하는 kk명 분대를 고르는 방법의 수를 구하라. kk를 1부터 nn까지 바꿔 가며 각각에 대해 답하라.

입력

첫 줄에 정수 nn (1≤n≤401 \le n \le 40)이 주어진다. 바이토그롬의 병사 수이다.

둘째 줄에 정수 nn개 a1,…,ana_1, \ldots, a_n (1≤ai≤n1 \le a_i \le n, i≠ji \ne j이면 ai≠aja_i \ne a_j)이 주어진다. aia_i는 ii번 병사의 원거리 전투 수준이다.

출력

nn개의 줄을 출력한다. kk번째 줄에는 정확히 kk명을 보낼 때 마찰이 생길 수 있는 쌍의 최소 개수와, 그 최소를 달성하는 방법의 수를 공백으로 구분해 출력한다.

힌트

k=1k=1이면 마찰이 생길 쌍이 없고, 그 병사는 5가지 방법으로 고를 수 있다.

k=2k=2이면 마찰이 생기지 않도록 (2, 4), (3, 4), (3, 5) 중 하나의 쌍을 골라야 한다.

k=3k=3이면 (2, 3, 4) 또는 (3, 4, 5)를 보내 마찰이 생길 쌍을 하나로 줄일 수 있다.

k=4k=4이면 첫 번째 병사를 제외한 나머지를 모두 보내는 것이 최선이다. 첫 번째 병사는 번호 때문에 근접 전투가 가장 낮지만, 원거리 전투 수준 a1=5a_1 = 5가 가장 높아서 다른 모든 병사와 마찰을 일으킬 수 있다.

k=5k=5이면 일곱 쌍이 마찰을 일으킨다.

예제1

  1. 예제 1

    입력
    5
    5 3 1 4 2
    
    예상 출력
    0 5
    0 3
    1 2
    3 1
    7 1