Problem W: 二分查找(数据量较大)
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:15
Solved:8
Description
输入n个(n<=1000000)从小到大排序好的整数,输入一个数x,用二分查找算法,找出该数字的位置。
Input
第1行一个数字n,表示有n个整数
第2行10个整数,按从小到大的顺序输入,中间以空格分隔
第3行一个整数,表示要查找的数据。
第2行10个整数,按从小到大的顺序输入,中间以空格分隔
第3行一个整数,表示要查找的数据。
Output
一行,若存在则输出位置,若不存在则输出"not find"
Sample Input Copy
5
1 2 3 4 5
4
Sample Output Copy
4
HINT
在算法竞赛中,我们经常能看到很多人写的代码中main()函数中第一行代码为:
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
主要用途是在涉及到大量数据输入输出时,如输入的数据量达到100000以上时,C++中关闭输入输出流的同步,可以提高程序的执行效率。
注意:
关闭了同步流,就不能使用scanf,printf,getchar();
不能再用cout<<endl,而应该改用cout<<‘\n’。
示例:
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);//关闭输入输出同步流
cin.tie(0);
cout.tie(0);
int n,a[100000];
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
cout<<a[i];
return 0;
}