其实大可不必考虑双指针,用一个map轻松解决
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define dwn(i,a,b) for(int i=(a);i>=(b);--i)
template <typename T> inline void rd(T &x){x=0;char c=getchar();int f=0;while(!isdigit(c)){f|=c=='-';c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}x=f?-x:x;}
#define mem(a,b) memset(a,b,sizeof(a))
#define ee(i,u) for(int i=head[u];i;i=e[i].next)
//阅读程序时请忽略以上的zz宏定义
int n,m,x;
#define N 100010
int a[N],b[N];
map<int,int>mpb;
#undef int
int main(){
#define int long long
rd(n),rd(m),rd(x);
rep(i,1,n){
rd(a[i]);
}
rep(i,1,m){
rd(b[i]);
mpb[b[i]]=i;//b[i]这个值存在且编号为i
}
rep(i,1,n){
if(mpb[x-a[i]]){//a[i]需要的是b数组有x-a[i]这个值,如果mpb[x-a[i]]不为零,及说明存在,直接输出
printf("%lld %lld\n",i-1,mpb[x-a[i]]-1);//数组下标从0开始,减一就好
break;//题目保证了仅有一组解
}
}
return 0;
}
/*
4 5 6
1 2 4 7
3 4 6 8 9
*/
//1 1