Cod sursa(job #855538)

Utilizator vladm97Matei Vlad vladm97 Data 15 ianuarie 2013 09:06:50
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
#define lmax 110000
using namespace std;
int n,v[lmax],op,x;
int caut(int st,int dr){
	if(st>dr)return st;
	int m=(st+dr)/2;
	if(x>=v[m])return caut(m+1,dr);
	else return caut(st,m-1);
}
int cautf(int st, int dr){
	if(st>dr)return st;
	int m=(st+dr)/2;
	if(x>v[m])return caut(m+1,dr);
	else return caut(st,m-1);
}
int main(){
	int i,et,b;
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
	f>>n;
	for(i=1;i<=n;i++)
		f>>v[i];
	f>>et;
	while(et!=0){et--;
		f>>op>>x;
		if(op!=2)b=caut(1,n);
		else b=cautf(1,n);
		if(op==0){
			 if(v[b-1]!=x)g<<-1;
			 else g<<b-1;
		}
		else g<<b-1;
		g<<'\n';}
	f.close();
	g.close();
}