Pagini recente » Cod sursa (job #3252005) | Cod sursa (job #1933078) | Cod sursa (job #1220336) | Cod sursa (job #1322720) | Cod sursa (job #1798659)
#include <fstream>
using namespace std;
int v[100000];
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
long long n,i,m,k,x,r,pas;
f>>n;
for(i = 0; i < n; i++)
f>>v[i];
f>>m;
for(i = 0; i < m; i++){
f>>k>>x;
r = 0;
pas = 1;
while(pas < n)
pas = pas * 2;
if(k == 0){
while(pas != 0){
if(r + pas < n && v[r + pas] <=x ){
r = r + pas;
}
pas/=2;
}
if(v[r] == x)
g<<r+1;
else
g<<-1;
g<<"\n";
}
if(k==1){
while(pas!=0){
if(r + pas < n && v[r + pas] <= x){
r = r + pas;
}
pas = pas / 2;
}
g<<r+1<<"\n";
}
if(k == 2){
while(pas!=0){
if(r + pas < n && v[r + pas] < x){
r = r + pas;
}
pas = pas / 2;
}
g<<r+2<<"\n";
}
}
return 0;
}