题目描述
输入描述
输出描述
输出一个整数表示答案。
输入输出样例
示例
输入
3
1 1 1
2 2 2
3 3 3
输出
27
运行限制
- 最大运行时间:2s
- 最大运行内存: 256M
总通过次数: 4618 | 总提交次数: 7179 | 通过率: 64.3%
难度: 中等 标签: 2018, 暴力, 省赛
代码:
#include <stdio.h>
#include <stdlib.h>
#define N 100001
int main(int argc, char *argv[])
{
long long count=0; // 声明一个长整型变量 count,用于存储计算结果
int n,i,j; // 声明整型变量 n、i、j
int c1,c2; // 声明整型变量 c1、c2
scanf("%d",&n); // 从标准输入中读取一个整数,存入变量 n
int a[n]; // 声明一个大小为 n 的整型数组 a
int b[n]; // 声明一个大小为 n 的整型数组 b
int c[n]; // 声明一个大小为 n 的整型数组 c
int ac[N]={0}; // 声明一个大小为 N 的整型数组 ac,初始化所有元素为 0
int cc[N]={0}; // 声明一个大小为 N 的整型数组 cc,初始化所有元素为 0
for(i=0;i<n;i++)
{
scanf("%d",&a[i]); // 从标准输入中读取一个整数,存入数组 a 中的第 i 个元素,并统计每个数出现的次数
ac[a[i]]++; // 统计每个数出现的次数,ac 数组的下标表示数字,值表示该数字出现的次数
}
for(i=0;i<n;i++)
{
scanf("%d",&b[i]); // 从标准输入中读取一个整数,存入数组 b 中的第 i 个元素
}
for(i=0;i<n;i++)
{
scanf("%d",&c[i]); // 从标准输入中读取一个整数,存入数组 c 中的第 i 个元素,并统计每个数出现的次数
cc[c[i]]++; // 统计每个数出现的次数,cc 数组的下标表示数字,值表示该数字出现的次数
}
for(i=0;i<n;i++)
{
int temp = 0;
c1 = c2 = 0; // 初始化 c1 和 c2 为 0
for(j=0;j<b[i];j++)
{
c1 += ac[j]; // 计算 ac 数组中小于 b[i] 的数出现的总次数
temp += cc[j]; // 计算 cc 数组中小于 b[i] 的数出现的总次数
}
c2 = n - temp - cc[b[i]]; // 计算不大于 b[i] 的数出现的总次数
count += 1ll*c1*c2; // 计算满足条件的数对数量并累加到 count 变量上
}
printf("%lld",count); // 输出最终的计算结果
return 0;
}