Pagini recente » Cod sursa (job #1968031) | Cod sursa (job #762814) | Cod sursa (job #918340) | Cod sursa (job #2245034) | Cod sursa (job #2404912)
#include <iostream>
#include <fstream>
#define L 16
using namespace std;
int v[100001];
int n;
int caut0(int x){
int r=0,pas=1<<L;
while(pas!=0){
if(r+pas<=n && v[r+pas]<=x){
r+=pas;
}
pas/=2;
}
if(v[r]!=x)
return -1;
return r;
}
int caut1(int x){
int r=0,pas=1<<L;
while(pas!=0){
if(r+pas<=n && v[r+pas]<=x){
r+=pas;
}
pas/=2;
}
return r;
}
int caut2(int x){
int r=0,pas=1<<L;
while(pas!=0){
if(r+pas<=n && v[r+pas]<x){
r+=pas;
}
pas/=2;
}
r++;
return r;
}
int main(){
ifstream fin("cautare.in");
ofstream fout("cautare.out");
int m;
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
}
fin>>m;
for(int i=0;i<m;i++){
int c;
int x;
fin>>c>>x;
if(c==0){
fout<<caut0(x)<<"\n";
}else if(c==1){
fout<<caut1(x)<<"\n";
}else{
fout<<caut2(x)<<"\n";
}
}
return 0;
}