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