파스타

면접 대비

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

요약
세 가지 종류로 길이 N의 수열을 만들되 같은 종류가 세 번 이상 연속하지 않아야 하며, 일부 날짜가 고정되어 있을 때 가능한 계획의 수를 10000으로 나눈 나머지를 구한다.
난이도

보통10점 중 4점

유형
동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

상근이는 매일 저녁으로 파스타를 만들어 먹는다. 만들 수 있는 파스타는 토마토 소스, 크림 소스, 바질 소스 세 종류이다.

상근이는 앞으로 NN일 동안 먹을 파스타를 계획하려고 한다. 매일 세 종류 중 하나를 고르는데, 같은 파스타를 계속 먹으면 질리기 때문에 같은 종류를 3일 이상 연속으로 먹지는 않는다. 즉, 어떤 파스타든 최대 2일까지만 연달아 먹을 수 있다.

또한 NN일 중 KK일은 먹을 파스타가 미리 정해져 있다.

NN과 미리 정해진 날의 정보가 주어질 때, 가능한 계획의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 두 정수 NN과 KK가 주어진다. (3≤N≤1003 \le N \le 100, 1≤K≤N1 \le K \le N)

다음 KK개 줄에는 파스타가 미리 정해진 날의 정보가 한 줄에 하나씩 Ai BiA_i\ B_i 형식으로 주어진다. 이는 AiA_i일에 먹을 파스타가 BiB_i라는 뜻이다. BiB_i가 11이면 토마토 소스, 22이면 크림 소스, 33이면 바질 소스를 나타낸다. 모든 AiA_i는 서로 다르다.

출력

가능한 계획의 수를 1000010000으로 나눈 나머지를 출력한다.

힌트

N=5N = 5이고 1일에 토마토, 3일에 토마토, 4일에 크림 소스가 정해진 경우, 다음과 같이 총 6가지 계획이 가능하다. (각 숫자는 해당 날의 파스타 종류를 뜻한다.)

  • 1, 2, 1, 2, 1
  • 1, 2, 1, 2, 2
  • 1, 2, 1, 2, 3
  • 1, 3, 1, 2, 1
  • 1, 3, 1, 2, 2
  • 1, 3, 1, 2, 3

예제2

  1. 예제 1

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

    입력
    20 5
    10 2
    4 3
    12 1
    13 2
    9 1
    
    예상 출력
    2640