Cod sursa(job #1703970)
Utilizator | Data | 17 mai 2016 20:48:28 | |
---|---|---|---|
Problema | Cautare binara | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.09 kb |
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[100005];
const int pas=1<<16;
int main()
{
int n,m,i,a,x,y,b;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cin>>m;
for(a=1;a<=m;a++)
{
cin>>b>>x;
y=pas;
i=0;
if(b==0)
while(y!=0){
if(i+y<=n&&v[i+y]==x)
i+=y;
y/=2;
}
if(b==1)
while(y!=0){
if(i+y<=n&&v[i+y]<=x)
i+=y;
y/=2;
}
if(b==2)
while(y!=0){
if(i+y<=n&&v[i+y]<x)
i+=y;
y/=2;
}
if(i==0 and b == 0)
cout<<-1<<"\n";
if(b==2)
cout<<i+1<<"\n";
else
cout<<i<<"\n";
}
cin.close();
cout.close();
return 0;
}