Pagini recente » Cod sursa (job #2098281) | Cod sursa (job #1211087) | Cod sursa (job #2731921) | Cod sursa (job #2548469) | Cod sursa (job #2253844)
#include <iostream>
using namespace std;
//ifstream fin("cautbin.in");
//ofstream fout("cautbin.out");
int n, x, v[100002], m, q;
int rezolva0(int p, int u, int x)
{
int mij, sol=0;
while(p<=u) {
mij=(p+u)/2;
if(v[mij]<=x) {
sol=mij;
p=mij+1;
}
else
u=mij-1;
}
if(v[sol]==x)
return sol;
return -1;
}
int rezolva1(int p, int u, int x)
{
int mij, sol=0;
while(p<=u) {
mij=(p+u)/2;
if(v[mij]<=x) {
sol=mij;
p=mij+1;
}
else
u=mij-1;
}
return sol;
}
int rezolva2(int p, int u, int x)
{
int mij, sol=0;
while(p<=u) {
mij=(p+u)/2;
if(v[mij]<x)
p=mij+1;
else {
u=mij-1;
sol=mij;
}
}
return sol;
}
int main()
{
cin>>n;
for(int i=1; i<=n; ++i)
cin>>v[i];
cin>>m;
while(m--) {
cin>>q>>x;
if(q==0)
cout<<rezolva0(1,n,x)<<'\n';
if(q==1)
cout<<rezolva1(1,n,x)<<'\n';
if(q==2)
cout<<rezolva2(1,n,x)<<'\n';
}
}