M
2015-08-14 10:16
239 查看
题目描述
给出含有n个数的升序序列,保证序列中的数两两不相等,这n个数编号从1 到n。然后给出q次询问,每次询问给出一个数x,若x存在于此序列中,则输出其编号,否则输出-1。
输入
单组输入。首先输入一个整数n(1 <= n && n <= 3000000),接下的一行包含n个数。再接下来的一行包含一个正整数q(1 <= q && q <= 10000),表示有q次询问。
再接下来的q行,每行包含一个正整数x。
输出
对于每次询问,输出一个整数代表答案。示例输入
5 1 3 5 7 9 3 1 5 8
示例输出
1 3 -1
///用二分的方法
#include<stdio.h> #include<string.h> #define N 3000001 int b ; int main() { int n,m,k,i,mid; int a ; scanf("%d",&n); for(i=0;i<=n-1;i++) { scanf("%d",&a[i]); b[i]=i+1; } scanf("%d",&m); while(m--) { scanf("%d",&k); int flag=1; int low=0; int high=n-1; while(low<=high) { mid=(low+high)/2; if(k==a[mid]) { flag=0; break; } else if(k<a[mid]) { high=mid-1; } else { low=mid+1; } } if(flag==0) { printf("%d\n",b[mid]); } else { printf("-1\n"); } } return 0; }
相关文章推荐
- 利用frame进行页面跳转
- abstract class和interface的区别 及模板方法设计模式
- c/c++ 模拟http 协议,GET/POST 数据方法
- javascript之DOM操作
- jQuery 的基本过滤选择器
- 黑客成长之路---------(第7天)
- 95后基本不用微信!PM你了解你的用户么丨90后研究报告
- オラクルちょこっとリファレンス
- 命名基础
- 黑马程序员-Java基础:IO流
- Android 计算控件尺寸
- 用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1
- Codeforces Round #316 (Div. 2) B. Simple Game
- 使用对象关联为分类增加属性(每个对象的属性互不干扰)
- iOS中NSString常用操作合集
- hdu 5387
- 打开FORM时选择组织
- <!DOCTYPE>的作用
- androidの布局控件居于最底部实现
- Android中自定义checkbox样式