만드는 중입니다

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

전자레인지 가능한 부분 수열

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

요약
배열 A에서 x와 y만 쓰고 인접한 원소가 같지 않은 가장 긴 부분수열의 길이를 모든 x<y 쌍에 걸쳐 합한 값을 구합니다.
난이도

보통10점 중 7점

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

문제

길이가 NN인 정수 배열 [A1,A2,…,AN][A_1, A_2, \dots, A_N]이 주어진다.

배열에서 원소를 순서를 바꾸지 않고 0개 이상 제거해서 얻은 수열을 부분 수열이라고 한다. 예를 들어 [3,2,1,3,2][3, 2, 1, 3, 2]의 부분 수열에는 [2,1,2][2, 1, 2], [3,3][3, 3], [1][1], [3,2,1,3,2][3, 2, 1, 3, 2]가 있고, [1,2,3][1, 2, 3]은 없다.

부분 수열에 서로 다른 값이 최대 2개만 포함되고, 각 원소가 바로 옆 원소와 값이 다르면 그 부분 수열을 전자레인지 가능하다고 한다. 예를 들어 [2,1,2][2, 1, 2], [3,2,3,2][3, 2, 3, 2], [1][1]은 전자레인지 가능하고, [3,3][3, 3]과 [3,2,1,3,2][3, 2, 1, 3, 2]는 그렇지 않다.

f(x,y)f(x, y)는 모든 원소가 xx 또는 yy인 AA의 전자레인지 가능한 부분 수열 중 가장 긴 것의 길이이다. 1≤x<y≤M1 \le x < y \le M인 모든 (x,y)(x, y)에 대해 f(x,y)f(x, y)의 합을 구하시오.

입력

첫째 줄에 두 정수 NN과 MM이 주어진다 (1≤N,M≤300 0001 \le N, M \le 300\,000).

둘째 줄에 NN개의 정수 AiA_i가 주어진다 (1≤Ai≤M1 \le A_i \le M).

출력

1≤x<y≤M1 \le x < y \le M인 모든 f(x,y)f(x, y)의 합을 하나의 정수로 출력한다.

예제2

  1. 예제 1

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

    입력
    3 3
    1 1 1
    
    예상 출력
    2