Pagini recente » Cod sursa (job #122375) | Cod sursa (job #854959) | Cod sursa (job #860311) | Cod sursa (job #471037) | Cod sursa (job #2822666)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
long long n,v[100001],m,op,x;
int caut0(int st, int dr, int x){
int poz=-1;
while (st<=dr){
int mij=(st+dr)/2;
if (v[mij]==x){
poz=mij;
st=mij+1;
}
else if (v[mij]>x) dr=mij-1;
else st=mij+1;
}
return poz;
}
int caut1(int st, int dr, int x){
int poz;
while (st<=dr){
int mij=(st+dr)/2;
if (v[mij]<=x){
poz=mij;
st=mij+1;
}
else dr=mij-1;
}
return poz;
}
int caut2(int st, int dr, int x){
int poz;
while (st<=dr){
int mij=(st+dr)/2;
if (v[mij]>=x){
poz=mij;
dr=mij-1;
}
else st=mij+1;
}
return poz;
}
int main()
{
in>>n;
for (int i=1; i<=n; i++){
in>>v[i];
}
in>>m;
for (int i=1; i<=m; i++){
in>>op>>x;
if (op==0) out<<caut0(1, n, x)<<'\n';
else if (op==1) out<<caut1(1, n, x)<<'\n';
else out<<caut2(1, n, x);
}
}