Cod sursa(job #807891)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 5 noiembrie 2012 21:20:55
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <vector>
#include <string>

using namespace std;

ifstream in("cautbin.in");
ofstream out("cautbin.out");

int n;
vector<int> v;

void read(){
	in>>n;
	int i,x;
	for(i=1;i<=n;++i){
		in>>x;
		v.push_back(x);
	}
}

int find(int x,int op){
	int size=v.size();
	int index,step;
	for(step=1;step<size;step<<=1);
	for(index=0;step;step>>=1){
		if(index+step<size && v[index+step]<=x){
			index+=step;
		}
	}
	if(op==0){
		if(v[index]==x)
			return index+1;
		return -1;
	}
	if(op==1){
		return index+1;
	}
	for(index=0;step;step>>=1){
		if(index+step<size && v[index+step]<x){
			index+=step;
		}
	}
	return index+2;
}

void ops(){
	int nrop;
	int op,operand;
	in>>nrop;
	while(nrop--){
		in>>op>>operand;
		out<<find(operand,op)<<" ";
		switch(op){
		case 0:
			
			break;
		case 1:
			break;
		case 2:
			break;
		}
	}
}

int main(){
	read();
	ops();
	return 0;
}