Cod sursa(job #412220)

Utilizator cezyGrigore Cezar cezy Data 5 martie 2010 13:58:11
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<algorithm>
using namespace std;
long v[100005];
int main ()
{
	ifstream fin("cautbin.in");
	ofstream fout("cautbin.out");
	long i,n,m,x,y,poz;
	fin>>n;
	for(i=1;i<=n;i++)
		fin>>v[i];
	fin>>m;
	sort(v+1,v+n+1);
	for(i=1;i<=m;i++)
	{
		fin>>x>>y;
		if (x == 0) {
            poz = upper_bound(v + 1, v + n + 1, y) - v - 1;
            if (poz <= n && poz >= 1 && v[poz] == y)
                fout<<poz<<"\n";
            else
                fout<<-1<<"\n";
        } else if (x == 1) {
            poz = lower_bound(v + 1, v + n + 1, y + 1) - v - 1;
             fout<<poz<<"\n";
        } else {
            poz = upper_bound(v + 1, v + n + 1, y - 1) - v;
            fout<<poz<<"\n";
        }
	}
	fin.close ();
	fout.close ();
	return 0;
}