Cod sursa(job #611208)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 31 august 2011 12:56:42
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
int n,m,v[100100];
using namespace std;
int main() {
	int i,logN,lg,x,y;
	ifstream in("cautbin.in");
	ofstream out("cautbin.out");
	in>>n;
	for(i=1;i<=n;in>>v[i],i++);
	in>>m;
	for(logN=1;logN<=n;logN<<=1);
	for(;m;m--)
		{in>>x>>y;
		if(x<2)
			{for (lg = logN, i = 0; lg; lg >>= 1)
				if (i + lg <= n && v[i + lg] <= y)
					i += lg;
			if (!x&& v[i] != y)
				out<<"-1\n";
			else
				out<<i<<'\n';
			continue;
			}
			
		for (lg = logN, i = n; lg; lg >>= 1)
			if (i - lg > 0 && v[i - lg] >= y)
				i -= lg;
		out<<i<<'\n';	
		}
	out.close();
	in.close();
	return 0;
}