Pagini recente » Cod sursa (job #1442278) | Cod sursa (job #2724550) | Cod sursa (job #655162) | Cod sursa (job #2617721) | Cod sursa (job #2622380)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100005];
int mi;
int cautare_binara(int st,int dr,int x)
{
if(st>dr)
return mi;
mi=(st+dr)/2;
if(x==v[mi])
return mi;
if(x<v[mi])
return cautare_binara(st,mi-1,x);
if(x>v[mi])
return cautare_binara(mi+1,dr,x);
}
int main()
{
int n;
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>v[i];
}
int m;
fin>>m;
while(m--)
{
int x,y;
fin>>x>>y;
int poz=cautare_binara(1,n,y);
if(x==0)
{
if(v[poz]!=y)
fout<<-1<<"\n";
else
{
while(v[poz+1]==v[poz])poz++;
fout<<poz<<"\n";
}
}
else if(x==1)
{
if(v[poz]==y)
while(v[poz+1]==v[poz])poz++;
else if(v[poz]>x)poz--;
fout<<poz<<"\n";
}
else if(x==2)
{
if(v[poz]==y)
while(v[poz-1]==v[poz])poz--;
else if(v[poz]<x)poz++;
fout<<poz<<"\n";
}
}
return 0;
}