王道
作者:
acw_zxh
,
2022-11-17 14:52:02
,
所有人可见
,
阅读 251
2020 41.
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int sa[N],sb[N],sc[N];
//三个三元组中每一个元素都访问一次,时间复杂度为O(n +m + l)
int shortest_distance(int na,int nb,int nc){
int i = 0;int j = 0;int k = 0;
int res = N;
while(i < na && j < nb && k < nc){
int a = sa[i],b = sb[j],c=sc[k];
int d = abs(a - b) + abs(b-c) + abs(c-a);
res = min(res,d);
if(a <= b && a <= c){
i ++;
}else if(b <= a && b <= c){
j ++;
}else{
k ++;
}
}
return res;
}
int main(){
int n;cin>>n;
for(int i = 0;i < n;i ++) cin>>sa[i];
int m;cin>>m;
for(int i = 0;i < m;i ++) cin>>sb[i];
int l;cin>>l;
for(int i = 0;i < l;i ++) cin>>sc[i];
cout<<shortest_distance(n,m,l);
return 0;
}
二分查找
int Binary_Search(SqList L,ElemType key){
int low = 0,high = L.length -1;
while(low < heigh){
mid = (low + heigh) /2;
if(L.data[mid]==key) return mid;
else if(L.data[mid] < key) low = mid + 1;
else high = mid - 1;
}
return 0;
}