2026-01-27 20:55:03 +09:00

66 lines
1.4 KiB
Swift

func solve() {
guard let n = Int(readLine() ?? "") else { return }
var A: [Int] = [Int]()
var B: [Int] = [Int]()
var C: [Int] = [Int]()
var D: [Int] = [Int]()
for _ in 0..<n {
guard let input = readLine() else { break }
let ABCD = input.split(separator: " ").compactMap{Int($0)}
guard ABCD.count == 4 else { break }
A.append(ABCD[0])
B.append(ABCD[1])
C.append(ABCD[2])
D.append(ABCD[3])
}
var AB: [Int] = [Int]()
var CD: [Int] = [Int]()
for i in 0..<n {
for j in 0..<n {
AB.append(A[i] + B[j])
CD.append(C[i] + D[j])
}
}
AB.sort()
CD.sort(by: >)
var (pAB, pCD) = (0, 0)
let (nAB, nCD) = (AB.count, CD.count)
var ans = 0
while pAB < nAB && pCD < nCD {
let (ab, cd) = (AB[pAB], CD[pCD])
if ab + cd > 0 {
pCD += 1
}
else if ab + cd < 0 {
pAB += 1
}
else {
var countAB = 0
while pAB < nAB && ab == AB[pAB] {
pAB += 1
countAB += 1
}
var countCD = 0
while pCD < nCD && cd == CD[pCD] {
pCD += 1
countCD += 1
}
ans += countAB * countCD
}
}
print(ans)
}
solve()