C1159 - 和为0的4个值

题目描述

SUM 问题可以表述如下:给定四个整数列表 A、B、C 和 D,计算满足以下条件的四元组 (a, b, c, d) ∈ A × B × C × D 的个数:

a + b + c + d = 0

以下假设所有列表的大小相同,均为 n。

输入格式

输入文件的第一行包含列表的大小 n(该值最大可以达到 4000)。随后有 n 行,每行包含四个整数值(绝对值最大可达 228),分别属于 A、B、C 和 D。

输出格式

程序需要输出四元组的数量,这些四元组的和为零。

样例 #1

样例输入 #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

示例解释:确实,以下五个四元组的和为零:(-45, -27, 42, 30)、(26, 30, -10, -46)、(-32, 22, 56, -46)、(-32, 30, -75, 77)、(-32, -54, 56, 30)。

样例 #2

样例输入 #2

3
3 1 -11 17
17 9 -13 -1
-10 15 9 -15

样例输出 #2

2

补充说明

(a, b, c, d) ∈ A × B × C × D 的含义是:

  • 笛卡尔积A × B × C × D 表示四个列表 ABCD 的笛卡尔积。

    简单来说,笛卡尔积就是从每个列表中各取一个元素,形成一个四元组 (a, b, c, d)

    举例:如果 A = {1, 2}, B = {3}, C = {4}, D = {5, 6},那么 A × B × C × D 的所有可能组合是:

    {(1, 3, 4, 5), (1, 3, 4, 6), (2, 3, 4, 5), (2, 3, 4, 6)}

  • 四元组的范围(a, b, c, d) ∈ A × B × C × D 的意思是:

  • a 是从 A 中选的一个元素,

  • b 是从 B 中选的一个元素,

  • c 是从 C 中选的一个元素,

  • d 是从 D 中选的一个元素。

  • 问题的核心:在所有可能的四元组中,找出那些满足 a + b + c + d = 0 的组合。

测试点数目

共10个测试点,每个测试点10分

时间与内存限制

每个测试点时间:1000ms(1.0s),内存:256MiB

输入输出模式

本OJ支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1159.in,输出文件名为:C1159.out