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

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

길 위의 순열: Alice

면접 대비

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

요약
순열이 주어질 때 모든 연속 부분 배열의 역전 개수를 더한다. 각 역전 쌍은 두 위치를 모두 포함하는 부분 배열마다 한 번씩 기여한다.
난이도

보통10점 중 5점

유형
배열, 조합론, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

Alice와 Bob은 지역에서 열리는 여러 프로그래밍 대회에 가기 위해 자주 장거리 여행을 떠난다. 그들이 사는 주에서는 모든 것이 더 크기 때문에, 두 사람은 시간을 보내려고 차 안에서 할 게임을 만들었다.

Alice와 Bob은 둘 다 컴퓨터 과학자라서 "숫자 맞히기" 게임에 금방 흥미를 잃었다. 숫자를 맞히는 사람이 로그 횟수의 추측만으로 항상 답을 찾아낼 수 있기 때문이다. 난이도를 높이려고 두 사람은 새 게임 "순열 맞히기"를 만들었다.

길이 NN의 순열은 1,…,N1, \dots, N을 나열한 것이다. 순열 PP에 대해 inv(l,r)\text{inv}(l, r)을 l≤i≤j≤rl \leq i \leq j \leq r이고 Pi>PjP_i > P_j인 쌍 (i,j)(i, j)의 개수로 정의한다.

이 게임에서 Alice는 순열 하나를 생각하고, Bob은 Alice에게 함수 inv\text{inv}의 값을 최대 NN번 물어볼 수 있다.

Alice는 이미 자신의 순열 PP를 생각해 두었다. Bob의 질문에 아무 생각 없이 답하던 Alice는 다른 문제를 떠올린다. 모든 ll과 rr에 대한 inv(l,r)\text{inv}(l, r)의 합은 얼마일까?

입력

첫째 줄에 순열의 길이 NN(1≤N≤100 0001 \leq N \leq 100\,000)이 주어진다. 둘째 줄에 Alice의 순열 PP를 이루는 NN개의 정수가 공백으로 구분되어 주어진다.

출력

모든 ll과 rr에 대한 inv(l,r)\text{inv}(l, r)의 합을 정수 하나로 출력한다. 답은 부호 있는 6464비트 정수 범위에 들어감이 보장된다.

힌트

첫 번째 예시에서는 역전 쌍이 없다.

두 번째 예시에서는

  • inv(1,1)=0\text{inv}(1, 1) = 0.
  • inv(1,2)=0\text{inv}(1, 2) = 0.
  • inv(1,3)=1\text{inv}(1, 3) = 1.
  • inv(2,2)=0\text{inv}(2, 2) = 0.
  • inv(2,3)=1\text{inv}(2, 3) = 1.
  • inv(3,3)=0\text{inv}(3, 3) = 0.

이 값들을 모두 더하면 22가 된다.

예제2

  1. 예제 1

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

    입력
    3
    1 3 2
    
    예상 출력
    2