Cod sursa(job #930775)

Utilizator teoionescuIonescu Teodor teoionescu Data 27 martie 2013 20:10:54
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int N = 100001;
int v[N];
int n,m,p,q;
int caut0(int x){
	int i=0,pas=1<<30;
	while(pas!=0){
		if(i+pas<=n && v[i+pas]<=x) i+=pas;
		pas>>=1;
	}
	if(v[i]==x) return i;
	return -1;
}
int caut1(int x){
	int i=0,pas=1<<30;
	while(pas!=0){
		if(i+pas<=n && v[i+pas]<=x) i+=pas;
		pas>>=1;
	}
	return i;
}
int caut2(int x){
	int i=0,pas=1<<30;
	while(pas!=0){
		if(i+pas<=n && v[i+pas]<x) i+=pas;
		pas>>=1;
	}
	return i+1;
}
int main(){
	int i;
	in>>n;
	for(i=1;i<=n;i++) in>>v[i];
	in>>m;
	for(i=1;i<=m;i++){
		in>>p>>q;
		if(p==0) out<<caut0(q)<<'\n';
		if(p==1) out<<caut1(q)<<'\n';
		if(p==2) out<<caut2(q)<<'\n';
	}
	return 0;
}