Cod sursa(job #2504076)

Utilizator bossunorocosuMilitaru Madalin bossunorocosu Data 4 decembrie 2019 13:00:03
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n,m,v[100010];

void citire()
{
int i;
f>>n;
for(i=1;i<=n;i++)
	 f>>v[i];
f>>m;
}

int cautare(int x)
{
int p=1,u=n,mij;
while(p<u)
	{
	mij=(p+u)>>1;
	if(x<=v[mij])
		u=mij;
	else
		p=mij+1;
	}
return p;
}

int main()
{
citire();
int i,aux,x,r;
for(i=0;i<m;i++)
	{
	f>>aux>>x;
	r=cautare(x);
	if(aux==0)
		{
		if(v[r]!=x)
			r=-1;
		else
			while(v[r+1]==x)
				r++;
		}
	else
		if(aux==1)
			{
			while(v[r]>x)
				r--;
			}
		else
			while(v[r]<x)
				r++;
	g<<r<<'\n';
	}
return 0;
}