poj3266

`//已知两个给定的序列,一个升序排列,一个降序排列,在这两个序列中各找一个数,它们加 起来恰好等于 10000。
//解题:一个序列升序操作,另一个序列进行枚举

include

include<stdio.h>

include<math.h>

include<string.h>

include

include

using namespace std;

const int N = 5e4 + 10;
int a[N];
int b[N];
int main()
{
int n, m;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &m);
for (int i = 1; i <= m; i++)
{
scanf("%d", &b[i]);
}
sort(b + 1, b+m + 1);//对其进行升序操作在#include
int s,t,mid;
for (int i = 1; i <= n; i++)
{
int x = 10000 - a[i];
//采用二分法查找
s = 1;
t = m;
while (s <= t)
{
mid = (s + t) / 2;
if (b[mid] < x)
s = mid + 1;
else if (b[mid] == x)
{
printf("YES\n");
return 0;
}
else
t = mid - 1;

	}
}
printf("NO\n");
return 0;

}`

posted @ 2020-11-04 17:15  Quella'  阅读(60)  评论(0)    收藏  举报
Live2D