Pagini recente » Cod sursa (job #158958) | Cod sursa (job #1332514) | Cod sursa (job #1315137) | Cod sursa (job #1063123) | Cod sursa (job #2197991)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n, v[100001];
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;
}
}
}
if(v[poz]<=x){
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;
}
}
}
if(v[poz]>=x){
return poz;
}
}
int main()
{
int m, a, b;
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)<<endl;
}
if(a==1){
out<<cautbin1(b)<<endl;
}
if(a==2){
out<<cautbin2(b)<<endl;
}
}
in.close();
out.close();
}