AcWing 1236. 递增三元组
原题链接
中等
作者:
Pr
,
2021-04-02 18:40:15
,
所有人可见
,
阅读 387
二分写法
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e5+10;
int a[N],b[N],c[N];
int n;
int main()
{
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(c,c+n);
ll res=0;
for(int i=0;i<n;i++){
int l=lower_bound(a,a+n,b[i])-a;//在a中找到第一个>=b[i]的位置
int r=upper_bound(c,c+n,b[i])-c;
res=res+(n-r)*1ll*l;
//cout<<l<<" "<<r<<endl;
}
cout<<res<<endl;
return 0;
}
少了三个```
手误了,已修改
哈哈哈!! 向你学习