题目描述
blablabla
样例
blablabla
#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N],b[N];
int main(){
int n,m,x;
cin>>n>>m>>x;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<m;i++) cin>>b[i];
for(int i=0,j=m-1;i<n;i++){
while(a[i]+b[j]>x&&j>0) j--; //利用升序 最小+最大
if(a[i]+b[j]==x)
cout<<i<<" "<<j<<endl;
}
}
双指针要么两头出发,要么一头出发。根据题意更好选择
i=0,j=0 j<m&&A[i]+B[j]<x 和 i=0,j=m-1 A[i]+B[j]!=x 是不行的
都会有在j=m/j=0 的时候 条件刚好不满足。 把代码写入 看数据个例 即可知道