Pagini recente » Istoria paginii utilizator/raluca_10 | Monitorul de evaluare | Soluţii Urmasii lui Moisil 2017 | Statistici Feydieu Sebastian Adrian (Feydieu) | Cod sursa (job #853896)
Cod sursa(job #853896)
#include <fstream>
#define NMAX 100004
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int N,M,mP;
int V[NMAX];
int CautaM(int key)
{
int i,step;
for(i=0,step=mP;step;step>>=1)
if(i+step<=N&&V[i+step]<=key)
i+=step;
return i;
}
int Cautam(int key)
{
int i,step;
for(i=0,step=mP;step;step>>=1)
if(i+step<=N&&V[i+step]<key)
i+=step;
return i+1;
}
int main()
{
int i,poz,op,x;
in>>N;
for(i=1;i<=N;i++)
in>>V[i];
for(mP = 1;mP<N;mP<<=1);
in>>M;
while(M--)
{
in>>op>>x;
if(op==0){ poz = CautaM(x); if(V[poz]!=x)out<<"-1\n";else out<<poz<<'\n';}
if(op==1){ poz = CautaM(x); out<<poz<<'\n';}
if(op==2){ poz = Cautam(x); out<<poz<<'\n';}
}
return 0;
}