#include<bits/stdc++.h> using namespace std; const int MAXN = 100005; int a[MAXN],b[MAXN],c[MAXN]; int n,sum; int main(){ //freopen("1.txt","r",stdin); cin>>n; for(int i=0;i<n;i++)scanf("%d",&a[i]); for(int i=0;i<n;i++)scanf("%d",&b[i]); for(int i=0;i<n;i++)scanf("%d",&c[i]); sort(a,a+n); sort(b,b+n); sort(c,c+n); sum = 0; int cnt1=0,cnt2=0; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(a[j]<b[i])cnt1++; if(c[j]>b[i])cnt2++; } sum += cnt1*cnt2; cnt1=cnt2=0; } cout<<sum; return 0; }
以b[]数组中的每个数字为 参考(之里是分步乘法)
在a[]数组中找<b[i]的个数
在c[]数组中找>b[i]的个数
再运用分类加法,将每次sum加起来
代码简洁易懂,老少皆宜