66 lines
1.4 KiB
Swift
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()
|