만드는 중입니다

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

Knob

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

요약
박자마다 왼쪽과 오른쪽 노브의 회전 방향이 주어질 때, 노브가 직전 박자와 같은 방향으로 돌아간 횟수와 두 노브가 같은 박자에 같은 방향으로 돈 횟수를 더한 점수를 구합니다.
난이도

쉬움10점 중 2점

유형
시뮬레이션, 구현
정답자
아직 제출이 없습니다

Knob

성우는 요즘 박자에 맞춰 두 개의 노브를 정확히 조작해야 하는 리듬 게임에 빠져 있다. 노브 시스템은 다음과 같다.

  • 노브는 왼쪽 노브와 오른쪽 노브 두 개가 있다.
  • 각 노브는 시계 방향 또는 반시계 방향으로 돌릴 수 있다. 돌리지 않고 가만히 둘 수도 있다.

곡의 길이는 TT이다. 곡의 tt번째 박자(1≤t≤T1 \leq t \leq T)에서는 ltl_t의 값에 따라 왼쪽 노브를, rtr_t의 값에 따라 오른쪽 노브를 다음과 같이 조작한다.

  • 값이 00이면 해당 노브를 돌리지 않고 가만히 둔다.
  • 값이 −1-1이면 해당 노브를 반시계 방향으로 돌린다. 값이 11이면 시계 방향으로 돌린다.

곡의 재미도는 매 박자에서 다음 규칙으로 측정한 값을 모두 더한 것이다.

  • 2번째 박자 이후에 왼쪽 노브를 직전 박자와 같은 방향으로 돌려야 하면 재미도가 11 오른다.
  • 2번째 박자 이후에 오른쪽 노브를 직전 박자와 같은 방향으로 돌려야 하면 재미도가 11 오른다.
  • 두 노브를 같은 박자에 모두 돌려야 하고, 같은 방향으로 돌려야 하면 재미도가 추가로 11 오른다.

성우를 대신해 곡의 재미도를 구하라.

입력

첫 번째 줄에 곡의 길이를 나타내는 정수 TT가 주어진다. (1≤T≤200 0001 \leq T \leq 200\,000)

두 번째 줄부터 T+1T+1번째 줄까지, t+1t+1번째 줄에 tt번째 박자의 노브 조작을 나타내는 정수 ltl_t, rtr_t가 공백을 사이에 두고 주어진다. 각 수는 −1-1, 00, 11 중 하나다.

출력

첫 번째 줄에 곡의 재미도를 출력한다.

힌트

입출력이 느리면 여러 줄을 입력받거나 출력할 때 시간 초과가 날 수 있다. 언어별로 다음 방법을 쓰는 것이 좋다.

  • C++: cin/cout을 쓰려면 main 함수의 첫 줄에 아래 두 줄을 넣고, 입력할 때 endl 대신 개행 문자(\n)를 사용한다. 이 경우 scanf, printf, puts, getchar, putchar 등 C의 입출력 함수는 쓸 수 없다.

    • cin.tie(nullptr);
    • sync_with_stdio(false);
  • Python: input 대신 sys.stdin.readline.rstrip()을 사용한다.

  • Java, Kotlin: Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용한다. BufferedWriter.flush는 프로그램이 끝나기 전에 한 번만 호출한다.

예제5

  1. 예제 1

    입력
    1
    -1 -1
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5
    0 1
    1 1
    0 0
    -1 1
    -1 0
    
    예상 출력
    3
    
  3. 예제 3

    입력
    8
    1 0
    1 0
    1 0
    1 0
    -1 0
    -1 0
    -1 0
    -1 0
    
    예상 출력
    6
    
  4. 예제 4

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

    입력
    3
    1 1
    1 1
    -1 -1
    
    예상 출력
    5