Cod sursa(job #419381)

Utilizator KosmynC64Munteanu Cosmin KosmynC64 Data 17 martie 2010 13:39:36
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<iostream.h>
#include<fstream.h>
int b_search(int a,int b,int c,int v[]){
	int m=(a+b)/2;
	if(c==v[m])return m;
	if(c<v[m])return b_search(a,m-1,c,v);
	if(c>v[m])return b_search(m+1,b,c,v);}
int main(){
	int n,v[100000],m,t,c,pos;
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
	f>>n;
	for(int i=0;i<n;i++)f>>v[i];
	f>>m;
	while(f>>t){
		f>>c;
		pos=b_search(0,n-1,c,v);
		if(t==0){if(v[pos]!=c)g<<"-1"<<endl;
		else{
		while(v[pos+1]==v[pos])pos++;
		g<<pos+1<<endl;}}
		if(t==1){
		while(v[pos+1]==v[pos])pos++;
		g<<pos+1<<endl;}
		if(t==2){
		while(v[pos-1]==v[pos])pos--;
		g<<pos+1<<endl;}
	}
	f.close();g.close();
return 0;}