아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

회로 세기

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

요약
주어진 최대 40개 평면 벡터 가운데 합이 영벡터가 되는 비어 있지 않은 부분집합 개수를 구합니다.
난이도

보통10점 중 6점

유형
분할 정복, 해시맵
정답자
아직 제출이 없습니다

문제

평면 위의 정수 벡터 NN개 (xi,yi)(x_i, y_i)가 순서대로 주어진다. 원점에서 출발해 각 벡터를 직전 위치에서의 변위로 삼으면 경로 하나가 만들어진다. 예를 들어 벡터 (1, 2), (2, 3), (-3, -5)는 경로 (0, 0), (1, 2), (3, 5), (0, 0)을 만든다. 원점에서 끝나는 경로를 회로라고 하며, 방금 만든 경로는 회로다.

비어 있지 않은 아무 부분집합으로나 경로를 만들 수 있고, 그 경로가 회로인지 아닌지는 부분집합을 어떤 순서로 이어 붙이든 달라지지 않는다. 회로가 되는 부분집합이 몇 개인지 세어라.

예를 들어 벡터가 {(1, 2), (-1, -2), (1, 1), (-2, -3), (-1, -1)}이면 회로가 되는 부분집합은 다음 4개다.

  • {(1, 2), (-1, -2)}
  • {(1, 1), (-1, -1)}
  • {(1, 2), (1, 1), (-2, -3)}
  • {(1, 2), (-1, -2), (1, 1), (-1, -1)}

입력

첫째 줄에 벡터의 개수 NN이 주어진다. (1≤N≤401 \le N \le 40)

다음 NN개 줄에 각각 정수 xx와 yy가 공백으로 구분되어 주어지며, 벡터 (x,y)(x, y)를 나타낸다. (∣x∣≤10|x| \le 10, ∣y∣≤10|y| \le 10, (x,y)≠(0,0)(x, y) \ne (0, 0))

주어지는 벡터는 모두 서로 다르다.

출력

회로가 되는, 비어 있지 않은 부분집합의 개수를 출력한다. 답은 101010^{10}보다 작음이 보장된다.

예제6

  1. 예제 1

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

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

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

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

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

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