만드는 중입니다

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

위문공연

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

요약
두 티켓을 맞바꿀 수 있는 모든 경우에서 병사들이 움직이는 총 이동 횟수의 합을 구합니다.
난이도

어려움10점 중 8점

유형
배열, 세그먼트 트리, 구현
정답자
아직 제출이 없습니다

문제

위문공연이 찾아왔다! 총 NN명의 병사가 공연을 보러 가기로 했다. 각 병사는 11번부터 NN번까지의 좌석 번호 중 서로 겹치지 않게 원하는 좌석 번호를 하나 고른 뒤, 티켓이 배부되기를 기다린다.

그런데 소란을 우려한 공연장 측이 티켓을 무작위로 나누어 준 탓에, 원하는 좌석의 티켓을 받지 못한 병사가 많이 생겼다. 화가 난 병사들은 다음 방식으로 착석하기로 약속하였다.

  1. 자신의 티켓에 적힌 번호의 좌석으로 이동한다. 그 좌석이 자신이 원하는 좌석이면 바로 앉는다.
  2. 티켓에 적힌 번호의 좌석에 아무도 없으면, 자신이 원하는 좌석으로 이동해서 앉는다.
  3. 티켓에 적힌 번호의 좌석에 누군가 앉아 있으면, 그 병사와 티켓을 교환한 뒤 1로 돌아간다.

이 방식대로 11번 좌석을 원하는 병사부터 NN번 좌석을 원하는 병사까지 순서대로 한 명씩 착석하면, 모두 자신이 원하는 좌석에 앉을 수 있다.

도훈이는 이 방식으로 움직였을 때 병사들의 총 이동 횟수를 계산하는 프로그램을 작성했다. 그런데 어떤 두 병사가 몰래 티켓을 맞바꾸었다는 소식을 들었다. 누가 맞바꾸었는지 알 수 없었던 도훈이는 티켓을 맞바꿀 수 있는 N(N−1)2\frac{N(N-1)}{2}가지 경우 모두에 대해 이동 횟수를 구하려 했으나, 프로그래밍 실력이 부족해 프로그램 작성에 실패했다.

티켓이 뒤바뀐 모든 N(N−1)2\frac{N(N-1)}{2}가지 경우에 대해, 병사들의 이동 횟수 총합을 구하라.

시간 제한: 1초. 메모리 제한: 1024MB.

입력

첫 번째 줄에 병사의 수 NN이 주어진다. (2≤N≤100000)(2 \leq N \leq 100000)

두 번째 줄에 NN개의 정수 t1,t2,…,tNt_1, t_2, \ldots, t_N이 공백으로 구분되어 주어진다. tit_i는 ii번 좌석을 원하는 병사가 받은 티켓 번호이다. (1≤ti≤N)(1 \leq t_i \leq N)

티켓 번호가 중복되어 주어지는 경우는 없다.

출력

병사들이 11번 좌석을 원하는 병사부터 NN번 좌석을 원하는 병사까지 차례대로 입장했을 때, 티켓을 맞바꿀 수 있는 모든 N(N−1)2\frac{N(N-1)}{2}가지 경우에 대한 병사들의 이동 횟수 총합을 출력한다.

예제1

  1. 예제 1

    입력
    5
    4 1 2 5 3
    
    예상 출력
    110