程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> nyoj 86 找球號(一)

nyoj 86 找球號(一)

編輯:C++入門知識

nyoj 86 找球號(一)


找球號(一)

時間限制:3000 ms | 內存限制:65535 KB 難度:3
描述
在某一國度裡流行著一種游戲。游戲規則為:在一堆球中,每個球上都有一個整數編號i(0<=i<=100000000),編號可重復,現在說一個隨機整數k(0<=k<=100000100),判斷編號為k的球是否在這堆球中(存在為"YES",否則為"NO"),先答出者為勝。現在有一個人想玩玩這個游戲,但他又很懶。他希望你能幫助他取得勝利。
輸入
第一行有兩個整數m,n(0<=n<=100000,0<=m<=1000000);m表示這堆球裡有m個球,n表示這個游戲進行n次。
接下來輸入m+n個整數,前m個分別表示這m個球的編號i,後n個分別表示每次游戲中的隨機整數k
輸出
輸出"YES"或"NO"
樣例輸入
6 4
23 34 46 768 343 343
2 4 23 343
樣例輸出
NO
NO
YES
YES
思路:首先用一個一位數組存入元素,然後運用快速排序進行排序,最後二分法查找
 
#include
#include
int s[1000005];
int low,high;
int cmp(const void *a,const void *b)//快速排序
{
	return (*(int *)a-*(int *)b);
}
int jisuan(int x)//二分法查找
{
   int mid;
   while(low<=high)
   {
        mid=(low+high)/2;
		if(s[mid]==x)
			return 1;
		else if(s[mid]high)
	   return 0;
}
int main()
{
    int i,m,n,a;
	scanf("%d%d",&m,&n);
	for(i=0;i

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved