매우 좋아하는 수열
시간 제한6초메모리 제한1024 MB
정수 배열의 모든 연속 부분합을 시작 인덱스, 끝 인덱스 순으로 나열한 수열에서 세 값의 합이 0이 되는 인덱스 삼중쌍 i<j<k의 개수를 구합니다.
문제
3SUM은 잘 알려진 알고리즘 문제다. 정수 수열 이 주어졌을 때, 을 만족하는 인덱스 를 찾는다.
임의의 정수 수열에 대해서는 보다 확실히 빠른 알고리즘이 알려져 있지 않다. 그러나 Bajtek은 이 사실을 모르고, 자신의 매우 좋아하는 수열에 대해 이 문제를 풀기로 한다.
Bajtek이 좋아하는 수열은 정수 개 으로 이루어진다. 매우 좋아하는 수열은 이 수열의 연속 부분 구간 개를 모두 골라 각 구간의 합을 구하고, 그 합들을 한 수열에 모아 만든다. 같은 값이 여러 번 나오면 모두 포함한다. 합들은 구간의 시작 인덱스가 작은 순서로 정렬하고, 시작 인덱스가 같으면 끝 인덱스가 작은 순서로 정렬한다.
Bajtek은 세 원소를 찾는 데에는 관심이 없다. 그는 합이 0이 되는 인덱스 세 개 의 정확한 개수를 알고 싶어 한다. 이 개수를 구하는 프로그램을 작성하라.
입력
첫 번째 줄에 정수 ()이 주어진다. Bajtek이 좋아하는 수열의 길이다.
두 번째 줄에는 정수 가 개 주어진다 (). 좋아하는 수열의 원소들이다.
출력
정수 하나를 출력한다. 매우 좋아하는 수열의 대응하는 원소들의 합이 이 되는 인덱스 조합 의 개수다.
힌트
첫 번째 테스트에서 매우 좋아하는 수열은 이다. 합이 0이 되는 서로 다른 원소 세 개는 뿐이므로 답은 1이다.
두 번째 테스트에서 매우 좋아하는 수열은 0이 55개로 이루어진다. 어떤 인덱스 세 개를 골라도 합은 0이고, 그런 조합은 26235개다.