Pagini recente » Cod sursa (job #1741358) | Cod sursa (job #2114870) | Cod sursa (job #2418492) | Cod sursa (job #1386344) | Cod sursa (job #2822152)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int n,v[100001],m,op,x;
int caut1(int x, int st, int dr){
int rez=-1;
while (st<=dr){
int mij=(st+dr)/2;
if (x==v[mij]){
rez=mij;
st=mij+1;
}
else if (x>v[mij]) st=mij+1;
else if (x<v[mij]) dr=mij-1;
}
return rez;
}
int caut2(int x, int st, int dr){
int rez=-1;
while (st<=dr){
int mij=(st+dr)/2;
if (x>=v[mij]){
rez=mij;
st=mij+1;
}
else if (x<v[mij]) dr=mij-1;
}
return rez;
}
int caut3(int x, int st, int dr){
int rez=-1;
while (st<=dr){
int mij=(st+dr)/2;
if (x<=v[mij]){
rez=mij;
dr=mij-1;
}
else if (x>v[mij]) st=mij+1;
}
return rez;
}
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<<caut1(x, 1, n);
else if (op==1) out<<caut2(x, 1, n);
else out<<caut3(x, 1, n);
}
}