Pagini recente » Cod sursa (job #1016884) | Cod sursa (job #1032006) | Cod sursa (job #3138358) | Cod sursa (job #957336) | Cod sursa (job #3140267)
#include <bits/stdc++.h>
using namespace std;
int A[100100];
int n,m,var,x, pozitie;
int l = 1, r;
int var1(){
while(l <= r){
// cout << l << " l" << endl;
// cout << r << " r" << endl;
int m = (l+r)/2;
if(A[m] < x){
l = m+1;
} else if(A[m] > x){
r = m-1;
} else {
pozitie = m;
// cout << pozitie << endl;
l = m+1;
var1();
}
}
return pozitie;
}
int var2(){
while(l <= r){
// cout << l << " l" << endl;
// cout << r << " r" << endl;
int m = (l+r)/2;
if(A[m] <= x){
pozitie = m;
// cout << pozitie << endl;
l = m+1;
r = n;
var2();
} else if(A[m] > x){
r = m-1;
}
}
return pozitie;
}
int var3(){
while(l <= r){
// cout << l << " l" << endl;
// cout << r << " r" << endl;
int m = (l+r)/2;
if(A[m] < x){
l = m+1;
} else if(A[m] >= x){
pozitie = m;
// cout << pozitie << endl;
l = 1;
r = m-1;
var3();
}
}
return pozitie;
}
int main(){
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
cin >> n;
for(int i=1; i<=n; i++){
cin >> A[i];
}
cin >> m;
for(int i=1; i<=m; i++){
cin >> var >> x;
if(var == 0){
l=1, r = n, pozitie = -1;
cout << var1() << endl;
} else if(var == 1){
l=1; r = n, pozitie = -1;
cout << var2() << endl;
} else {
l=1; r = n, pozitie = -1;
cout << var3() << endl;
}
}
}