码迷,mamicode.com
首页 > 其他好文 > 详细

Aizu ITP2_6_A(二分模板)

时间:2018-12-01 15:33:09      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:res   class   traints   turn   elements   cti   div   sorted by   ios   

For a given sequence $A = \{a_0, a_1, ..., a_{n-1}\}$ which is sorted by ascending order, find a specific value $k$ given as a query.

Input

The input is given in the following format.

$n$
$a_0 \; a_1 \; ,..., \; a_{n-1}$
$q$
$k_1$
$k_2$
:
$k_q$

The number of elements $n$ and each element $a_i$ are given in the first line and the second line respectively. In the third line, the number of queries $q$ is given and the following $q$ lines, $q$ integers $k_i$ are given as queries.

Output

For each query, print 1 if any element in $A$ is equivalent to $k$, and 0 otherwise.

Constraints

  • $1 \leq n \leq 100,000$
  • $1 \leq q \leq 200,000$
  • $0 \leq a_0 \leq a_1 \leq ... \leq a_{n-1} \leq 1,000,000,000$
  • $0 \leq k_i \leq 1,000,000,000$

Sample Input 1

4
1 2 2 4
3
2
3
5

Sample Output 1

1
0
0

题意:如果序列中有元素k则输出1,否则输出0。

思路:二分模板题。见代码。

疑惑:可能是这个题测试数据比较水,不排序也能过。


 

 1 #include<iostream>
 2 #include<algorithm> 
 3 using namespace std;
 4 int N;
 5 long long a[100005];
 6  
 7 int find(long long x,int l,int r){
 8     int m=(r+l)>>1;
 9     while(r>=l){
10         if(x==a[m]) return 1;
11         else if(x<a[m]) r=m-1;
12         else  l=m+1;
13                 
14         m=(r+l+1)>>1;
15     }
16 return 0;
17 }
18 
19 int main(){
20     int Q;
21     long long x;
22     
23     cin>>N;
24     for(int i=0;i<N;i++)
25         cin>>a[i];
26     sort(a,a+N);    
27     cin>>Q;
28     while(Q--){
29         cin>>x;
30         cout<<find(x,0,N-1)<<endl;
31     }     
32     return 0;
33 }

 

Aizu ITP2_6_A(二分模板)

标签:res   class   traints   turn   elements   cti   div   sorted by   ios   

原文地址:https://www.cnblogs.com/yzhhh/p/10048847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!