Google 面试题,题目地址:点击打开链接
C++代码:
//
// 1534.cpp
// 九度练习题
//
// Created by leizh007 on 15/7/14.
// Copyright (c) 2015年 leizh007. All rights reserved.
//
#include <iostream>
#include <algorithm>
using namespace std;
const int maxSize=110000;
long long a[maxSize];
long long b[maxSize];
long long countFunc(long long m,long long n,long long k) {
long long count=0;
long long j=n-1;
for (long long i=0; i<m; ++i) {
while (j>=0&&a[i]+b[j]>k) {
--j;
}
count+=j+1;
}
return count;
}
int main() {
long long m,n,k;
while (cin>>m>>n>>k) {
for (long long i=0; i<m; ++i) {
cin>>a[i];
}
for (long long j=0; j<n; ++j) {
cin>>b[j];
}
sort(a,a+m);
sort(b,b+n);
long long low=a[0]+b[0];
long long high=a[m-1]+b[n-1];
long long mid;
while (low<=high) {
mid=(low+high)>>1;
long long x=countFunc(m, n, mid);
if (x==k) {
low=mid;
break;
}else if(x>k){
high=mid-1;
}else{
low=mid+1;
}
}
cout<<low<<endl;
}
return 0;
}