만드는 중입니다

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

차원 디버깅

면접 대비

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

요약
모든 L_i가 0인 알고리즘에서 시작해 BFS로 검증 가능한 알고리즘의 수를 셉니다. 알고리즘 A는 모든 i에 대해 L_B가 H_A 이하이면 B를 검증합니다.
난이도

보통10점 중 4점

유형
그래프, BFS
정답자
아직 제출이 없습니다

문제

이 문제 하나를 며칠째 붙잡고 씨름해 왔고, 이제 더는 못 참겠다. 알고리즘의 버그를 이번에는 반드시 찾아내기로 했다. 그래서 처음부터 다시 시작한다. 완전히 새로 말이다. 가장 단순한 경우의 정답은 확실히 안다. (0,0,…,0)(0,0,\dots,0)에 대한 답은 00이다.

k개의 매개변수를 받는 문제를 n개의 더 단순하지만 느린 알고리즘으로 다시 푼다. 각 알고리즘은 모든 매개변수 ii마다 두 개의 경계 LiL_i와 HiH_i를 가진다. 알고리즘은 모든 매개변수 ii에 대해 xi≤Hix_i \leq H_i를 만족하는 입력 (x1,…,xk)(x_1,\dots,x_k)에서만 제 속도로 실행된다. 알고리즘 구현이 올바르다고 확신하려면, 모든 매개변수 ii에 대해 xi≥Lix_i \geq L_i를 만족하는 입력 (x1,…,xk)(x_1,\dots,x_k)에서 정확성을 적어도 한 번 검증해야 한다. 이를 위해서는 정확성이 이미 증명되어 있고 그렇게 큰 입력을 처리할 수 있는 다른 알고리즘이 필요하다. 또는 (0,0,…,0)(0,0,\dots,0)의 답을 알고 있어야 한다.

알고리즘들과 각각의 경계가 주어질 때, 올바르게 구현되었다고 확신할 수 있는 알고리즘의 개수를 구하라.

예를 들어 그림 D.1 왼쪽의 첫 번째 샘플을 보자. 첫 번째 알고리즘(빨강, 왼쪽 아래)으로 두 번째 알고리즘(노랑, 왼쪽 위)과 세 번째 알고리즘(파랑, 오른쪽 아래)의 정확성을 검증할 수 있다. 네 번째 알고리즘(회색, 오른쪽 위)의 정확성을 검증할 수 있는 알고리즘은 없다.

그림 D.1: 샘플 1과 2에서 각각 테스트할 알고리즘. 상자는 알고리즘을 테스트해야 하는 매개변수를 나타내고, 밝은 배경은 해당 알고리즘이 다른 알고리즘을 검증하는 데 쓰일 수 있는 영역을 나타낸다.

입력

입력은 다음과 같다.

  • 첫 줄에 정수 nn과 kk가 주어진다 (1≤n≤10001\leq n\leq 1000, 1≤k≤101\leq k\leq 10). 테스트할 알고리즘의 개수와 매개변수의 개수이다.

  • 이어서 nn쌍의 줄이 주어진다.

    • 한 줄에 kk개의 정수 L1,…,LkL_1, \dots, L_k가 주어진다 (0≤Li≤1090\leq L_i \leq 10^9).
    • 한 줄에 kk개의 정수 H1,…,HkH_1, \dots, H_k가 주어진다 (0≤Hi≤1090\leq H_i \leq 10^9).
  • 모든 ii에 대해 Li≤HiL_i \leq H_i가 보장된다.

출력

정확성을 검증할 수 있는 알고리즘의 개수를 출력한다.

예제4

  1. 예제 1

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

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

    입력
    3 1
    1
    10
    10
    100
    0
    1
    
    예상 출력
    3
    
  4. 예제 4

    입력
    3 3
    0 0 1
    2 2 1
    1 0 0
    2 3 4
    0 1 0
    3 4 5
    
    예상 출력
    0