회로 세기
시간 제한2초메모리 제한256 MB
주어진 최대 40개 평면 벡터 가운데 합이 영벡터가 되는 비어 있지 않은 부분집합 개수를 구합니다.
문제
평면 위의 정수 벡터 개 가 순서대로 주어진다. 원점에서 출발해 각 벡터를 직전 위치에서의 변위로 삼으면 경로 하나가 만들어진다. 예를 들어 벡터 (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)}
입력
첫째 줄에 벡터의 개수 이 주어진다. ()
다음 개 줄에 각각 정수 와 가 공백으로 구분되어 주어지며, 벡터 를 나타낸다. (, , )
주어지는 벡터는 모두 서로 다르다.
출력
회로가 되는, 비어 있지 않은 부분집합의 개수를 출력한다. 답은 보다 작음이 보장된다.