돌 옮기기

호수를 따라 돌을 빈 구간으로만 옮겨 흑돌과 백돌의 위치 집합을 바꿀 때 드는 최소 이동 거리를 구하고 불가능하면 -1을 출력합니다.

어려움8그리디문자열 매칭누적 합아직 제출이 없습니다시간 제한2초메모리 제한32 MB

문제

민혁이는 호숫가에 놓인 돌 2N2N개를 보다가 이런 생각을 한다. 하얀 돌과 검은 돌이 NN개씩 있으니, 두 색의 위치를 서로 바꿔 놓으면 어떨까?

마침 할 일이 없던 민혁이는 정말로 돌의 색 배치를 뒤바꿔 보기로 한다. 페인트 같은 도구가 없으니 돌을 하나씩 직접 들어서 옮겨야 한다.

옮기기 전에 민혁이는 호수를 한 바퀴 돌면서 출발 지점(위치 00)을 기준으로 각 돌의 위치와 호수의 둘레를 재 두었다.

돌이 매우 무거워서 돌을 들고 xx만큼 이동하려면 힘이 xx만큼 든다. 또 돌을 들고 지나가는 구간에 다른 돌이 있으면 방해가 되므로, 지나가는 구간에는 다른 돌이 하나도 없어야 한다.

민혁이는 이런 쓸데없는 일에 힘을 쓰고 싶지 않다. 검은 돌과 하얀 돌의 위치를 맞바꾸는 데 드는 힘의 최솟값을 구하라.

입력

첫 줄에 호수의 둘레 RR과 검은 돌의 개수 NN이 주어진다. 이어지는 2N2N개의 줄에는 각 돌의 위치 PkP_k와 색 CkC_k가 주어진다. CkC_k가 B면 하얀 돌이고, W면 검은 돌이다. 검은 돌과 하얀 돌의 개수는 같으며, 돌은 PkP_k가 커지는 순서로 주어진다. (1N2000001 \le N \le 200000, 2NR1092N \le R \le 10^9, 0Pk<R0 \le P_k < R)

출력

검은 돌과 하얀 돌의 위치를 맞바꿀 수 없으면 -1을 출력한다. 바꿀 수 있으면 필요한 힘의 최솟값을 출력한다. 답이 매우 클 수 있으니 주의한다.

힌트

돌의 크기는 00이라고 봐도 되고, 돌을 들었다 놓는 위치가 정수일 필요는 없다. 다만 돌을 모두 옮긴 뒤에는 옮기기 전과 같은 위치에 돌이 놓여 있고 색만 서로 바뀐 상태여야 한다.