Cod sursa(job #2068262)
Utilizator | Data | 17 noiembrie 2017 15:06:41 | |
---|---|---|---|
Problema | Cautare binara | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.12 kb |
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int v[150003];
int main()
{
int pas=1<<17,i,n,r,c,m,x;
in>>n;
for(i=1; i<=n; i++)
in>>v[i];
in>>m;
for(i=1; i<=m; i++)
{
in>>c>>x;
r=0;
pas=1<<17;
if(c==0)
{
while(pas)
{
if(v[r+pas]<=x && r+pas<=n)
{
r+=pas;
}
pas/=2;
}
if(v[r]!=x)
out<<-1<<'\n';
else
out<<r<<'\n';
}
else if(c==1)
{
while(pas)
{
if(v[r+pas]<=x && r+pas<=n)
{
r+=pas;
}
pas/=2;
}
out<<r<<'\n';
}
else if(c==2)
{
while(pas)
{
if(v[r+pas]<x && r+pas<=n)
{
r+=pas;
}
pas/=2;
}
out<<r+1<<'\n';
}
}
return 0;
}