Pagini recente » Cod sursa (job #1882438) | Cod sursa (job #2274075) | Cod sursa (job #2255465) | Cod sursa (job #369346) | Cod sursa (job #2615390)
#include<bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
//int const Max=1e5;
long long n,a[100001],m,cod,x,st,dr;
int main()
{
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
f>>m;
for(int i=1;i<=m;i++)
{
f>>cod>>x;
if(cod==2)
{
st=1, dr=n; ///cea mai mica pozitie pe care se afla un element cu valoarea mai mare sau egala cu x in sir in st
while(st<=dr)
{
long long mij=(st+dr)/2;
if(a[mij]>=x)
dr=mij-1;
else
st=mij+1;
}
g<<st<<"\n";
}
else
{
st=1, dr=n;
while(st<=dr)
{
long long mij=(st+dr)/2; ///cea mai mare pozitie pe care se afla un element cu valoarea mai mica sau egala cu x in sir in dr
if(a[mij]>x)
dr=mij-1;
else
st=mij+1;
}
if(cod==0)
{
if(a[dr]!=x)
g<<-1<<"\n";
else
g<<dr<<"\n";
}
if(cod==1)
g<<dr<<"\n";
}
}
return 0;
}