1 solutions
-
0
C :
#include<stdio.h> int a[100010]; int fac(int p,int q,int x) { int z;z=0; z=p+(q-p)/2; if(p>q) {printf("-1");return 0; } if(x==a[z]) {printf("%d",z);return 1; } else { if(x>a[z]) fac(z+1,q,x); else fac(p,z-1,x); } } int main() { int n,x,i; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } scanf("%d",&x); fac(1,n,x); }
C++ :
#include<iostream> using namespace std; const int max1=1000000; int a[max1],n,m; int flag; int search(int ,int, int ); int main() { cin>>n; for (int i=1; i<=n; ++i) cin>>a[i]; cin>>m; flag=search(1,n,m); //if (flag) cout<<"YES"<<endl; // else cout<<"NO"<<endl; cout<<flag<<endl; return 0; } int search(int l,int r,int m) { int mid=(l+r)/2; if (l>r) return -1; else if (a[mid]==m) return mid; else if (a[mid]>m) return search(l,mid-1,m); else return search(mid+1,r,m); }
Pascal :
program binary_find; type arr=array[1..100005] of longint; function bf_dg(l,r,x:longint;a:arr):longint; var m:longint; begin if l>r then exit(-1); m:=(l+r) div 2; if x=a[m] then exit(m); if x<a[m] then exit(bf_dg(l,m-1,x,a)) else exit(bf_dg(m+1,r,x,a)); end; function bf(n,x:longint;a:arr):longint; var l,r,m:longint; begin l:=1; r:=n; while l<=r do begin m:=(l+r) div 2; if x=a[m] then exit(m); if x<a[m] then r:=m-1 else l:=m+1; end; exit(-1); end; var a:arr; n,x,i:longint; begin readln(n); for i:=1 to n do read(a[i]); readln(x); writeln(bf(n,x,a)); readln; end.
- 1
Information
- ID
- 668
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 10
- Tags
- # Submissions
- 9
- Accepted
- 2
- Uploaded By