Pagini recente » Cod sursa (job #77716) | Cod sursa (job #1569921) | Cod sursa (job #1851047) | Cod sursa (job #3217007) | Cod sursa (job #2788634)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
int a[100002], b[100002][3];
int main()
{
int n, li, lf, m, x, M;
f>>n;
for(int i=1; i<=n; i++)
{
f>>a[i];
// cout<<a[i]<<" ";
}
f>>M;
for(int i=0; i<M; i++)
f>>b[i][0]>>b[i][1];
for(int i=0; i<M; i++)
{
if(b[i][0]==0)
{
x=b[i][1];
li=1;
lf=n;
m=(li+lf)/2;
while(li<=lf)
{
if(x>=a[m])
li=m+1;
else
lf=m-1;
m=(li+lf)/2;
}
if(lf<=n && a[lf]==x) cout<<lf<<"\n";
else cout<<-1<<"\n";
}
if(b[i][0]==1)
for(int i=n-1; i>=0; i--)
if(a[i]<=x)
{
cout<<i<<"\n";
break;
}
if(b[i][0]==2)
for(int i=0; i<n; i++)
if(a[i]>=x)
{
cout<<i;
break;
}
}
}