Pagini recente » Cod sursa (job #210624) | Cod sursa (job #1760829) | Cod sursa (job #1364268) | Cod sursa (job #1312958) | Cod sursa (job #2198008)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n, v[100005];
int m, a, b;
int cautbin0(int x){
int poz=0;
for(int i=1<<30;i>0;i=i>>1){
if(poz+i<=n){
if(v[poz+i]<=x){
poz=poz+i;
}
}
}
if(v[poz]==x){
return poz;
}else
return -1;
}
int cautbin1(int x){
int poz=0;
for(int i=1<<30;i>0;i=i>>1){
if(poz+i<=n){
if(v[poz+i]<=x){
poz=poz+i;
}
}
}
return poz;
}
int cautbin2(int x){
int poz=0;
for(int i=1<<30;i>0;i=i>>1){
if(poz+i<=n){
if(v[poz+i]<x){
poz=poz+i;
}
}
}
return poz+1;
}
int main()
{
in>>n;
for(int i=1;i<=n;i++){
in>>v[i];
}
in>>m;
for(int i=1;i<=m;i++){
in>>a>>b;
if(a==0){
out<<cautbin0(b)<<'\n';
}
if(a==1){
out<<cautbin1(b)<<'\n';
}
if(a==2){
out<<cautbin2(b)<<'\n';
}
}
in.close();
out.close();
}