Pagini recente » Borderou de evaluare (job #2614894) | Borderou de evaluare (job #1711157) | Borderou de evaluare (job #3331404) | Monitorul de evaluare | Cod sursa (job #3323907)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100005];
int main()
{
int n, m;
fin >> n;
for(int i=1; i<=n; i++)
fin >> v[i];
fin >> m;
for(int i=1; i<=m; i++)
{
int op, x, ans=-1;
int ans2=-1;
fin >> op >> x;
int st=0, dr=n;
if(op==0)
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij]==x)
{
ans=mij;
st=mij+1;
ans2=v[mij];
}
else if(v[mij]<x)
st=mij+1;
else
dr=mij-1;
}
else if(op==1)
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij]<=x)
{
ans=mij;
st=mij+1;
}
else
dr=mij-1;
}
else
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij]<x)
st=mij+1;
else
{
ans=mij;
dr=mij-1;
}
}
fout << ans << "\n";
}
return 0;
}