Time Limit: 1000MS Memory limit: 65536K
题目描述
在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.
输入
本题多组数据,首先输入一个数字n(n>=100000),然后输入n个数,数据保证数列递增,然后再输入一个查找数字。
输出
若存在输出YES,不存在输出NO.
示例输入
4 1 3 5 8 3
示例输出
YES
#include<stdio.h> #include<stdlib.h> int main() { int n,*s; int left,right,mid; int x,i; while(scanf("%d",&n)==1&&n>0) { s=(int *)malloc(n*sizeof(int)); if(s==NULL) exit(0); for(i=0;i<n;i++) scanf("%d",&s[i]); scanf("%d",&x); left=0; right=n-1; while(left<=right) { mid=(left+right)/2; if(s[mid]==x) { printf("YES\n"); break; } else if(s[mid]<x) left=mid+1; else right=mid-1; } if(left>right) printf("NO\n"); } }