알고리즘 문제/백준
합이 0인 네 정수 #7453
BEstyle
2023. 1. 9. 01:01
문제
정수로 이루어진 크기가 같은 배열 A, B, C, D가 있다.
A[a], B[b], C[c], D[d]의 합이 0인 (a, b, c, d) 쌍의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다.
출력
합이 0이 되는 쌍의 개수를 출력한다.
예제 입력 1 복사
6
-45 22 42 -16
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45
예제 출력 1 복사
5
출처
ICPC > Regionals > Europe > Southwestern European Regional Contest > SWERC 2005 E번
#pypy3
import sys
n = int(sys.stdin.readline())
alist, blist, clist, dlist = [], [], [], []
for i in range(n):
a, b, c, d = map(int, sys.stdin.readline().split())
alist.append(a)
blist.append(b)
clist.append(c)
dlist.append(d)
adict = {}
for i in range(n):
for j in range(n):
adict[alist[i] + blist[j]] = adict.get(alist[i] + blist[j], 0) + 1
ans = 0
for c in clist:
for d in dlist:
ans += adict.get((-c-d),0)
print(ans)