Cod sursa(job #662052)

Utilizator harababurelPuscas Sergiu harababurel Data 15 ianuarie 2012 19:13:33
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;
int n, m, v[100005], i;
int test, numar;
int start, stop, mij;

int caut(int k, int t) {
	start=1; stop=n;
	while(start<stop) {
		mij=start + (stop-start)/2;
		
		if(k<v[mij]) { stop=mij-1; }
		if(k>=v[mij]) { start=mij+1; }
		
	}
	cout<<start<<" "<<stop<<"\n";
	
	mij=(start+stop)/2;
	if(v[mij]>k) { mij--; }
	
	if(t==0) {
		if(v[mij]==k) {	return mij; }
		else { return -1; }
	}
	
	
	
	if(t==1) {
	//	while(v[mij]==k) { mij--; }
		return mij;
	}
	
	if(t==2) {
		if(v[mij]==k) {
			while(v[mij]==k) { mij--; }
			mij++;
		}
		return mij;
	}
	
	
		
		
	
}


	
	


int main() {
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");
	f>>n;
	for(i=1; i<=n; i++) {
		f>>v[i];
	}
	f>>m;
	for(i=1; i<=m; i++) {
		f>>test>>numar;
		g<<caut(numar,test);
		
		g<<"\n";
	}
		
	f.close();
	g.close();
	return 0;
}