공들의 리듬게임

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

문제

무한히 긴 직선 위에 공 $N$개가 놓여 있다. 각 공은 정지해 있거나, 왼쪽으로 움직이거나, 오른쪽으로 움직인다. 초기 공들의 위치는 모두 다르다.

리듬게임 장인인 현제는 공들이 계속 움직이다가 다른 공과 충돌하는 모습을 보며 일정한 리듬이 있다고 생각하다 게임을 만들었다. 처음에는 $0$점으로 시작하며, 공들끼리 충돌할 때 다음과 같이 점수를 얻고 공들의 상태가 바뀐다.

  • 왼쪽으로 움직이던 공과 오른쪽으로 움직이던 공이 충돌하면, 두 공 모두 진행 방향이 반대로 바뀌게 된다. 이 경우 $1$점을 얻는다.

  • 움직이던 공과 정지해 있던 공이 충돌하면, 움직이던 공은 그 자리에 정지하며, 정지해 있던 공은 움직이던 공이 이동하던 방향으로 움직인다. 이 경우 $2$점을 얻는다.

​​​​​​​

  • 왼쪽으로 움직이던 공과 정지해 있던 공, 오른쪽으로 움직이던 공이 동시에 충돌하면, 왼쪽으로 움직이던 공과 오른쪽으로 움직이던 공은 모두 진행 방향이 반대로 바뀌게 되며, 정지해 있던 공은 계속 정지해 있는다. 이 경우 $5$점을 얻는다.

​​​​​​​

한 번의 충돌이 여러 조건을 만족할 경우, 점수가 가장 높은 조건만 적용된다.

공이 더 이상 충돌하지 않을 만큼의 시간이 지났을 때 총점을 구해보자. 여기서 총점은 얻은 점수의 합이다.

움직이는 공들은 모두 $1$의 속력을 유지하며, 충돌 이후 새로 움직이는 공의 속력도 마찬가지이다. 공은 길이나 부피가 무시할 만큼 작아 없다고 가정하며, 충돌을 제외하고는 공의 운동 방향, 속력 등의 상태가 유지된다.

입력

첫 번째 줄에 공의 개수 $N$이 주어진다. $(1\le N\le 500\,000)$

다음 $N$줄에 걸쳐 각 공의 위치와 초기 상태를 나타내는 정수 $a_i$와 $d_i$가 공백으로 구분되어 주어진다. $(\lvert a_i\rvert\le 10^{18};$ $\lvert d_i\rvert\le 1)$

$a_i$는 직선 위의 공의 좌표이며, $d_i$에 따라 초기 상태는 다음과 같다.

  • $d_i=0$: 정지해 있다.
  • $d_i=-1$: 왼쪽으로 움직인다.
  • $d_i=1$: 오른쪽으로 움직인다.

모든 공들의 위치는 다르다.

출력

공이 더 이상 충돌하지 않을 만큼의 시간이 지났을 때 총점을 출력한다.