#include<iostream>usingnamespace std;constint N =1e5+10;int n , m ;int q[N];intmain(){scanf("%d%d",&n ,&m);for(int i =0; i < n ; i++)scanf("%d",&q[i]);while(m--){int x;scanf("%d",&x);int l =0, r = n -1;while(l < r){int mid = l + r >>1;if(q[mid]>= x) r = mid;else l = mid +1;}if(q[l]!= x) cout <<"-1 -1"<<endl;else{
cout << l <<" ";int l =0,r= n -1;while(l < r){int mid = l + r +1>>1;if(q[mid]<= x) l = mid;else r= mid -1;}
cout << l << endl;}}return0;}
浮点数二分
#include<iostream>usingnamespace std;intmain(){double x;
cin >> x;double l =0.0, r - x;while(r - l >1e-8){double mid =(l + r)/2;if(mid * mid >= x ) r = mid;else l = mid;}printf("%lf\n", l);return0;}