Pagini recente » Cod sursa (job #1531311) | Cod sursa (job #1231957) | Cod sursa (job #2695913) | Cod sursa (job #484363) | Cod sursa (job #3276559)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m,x,c;
int main(){
fin >> n;
vector<int> v(n+1);
for(int i = 1; i<=n; i++) fin >> v[i];
fin >> m;
for(int i = 1; i<=m; i++){
fin >> c >> x;
int l = 1;
int r = n;
int ans = -1;
if(c == 0){
while(l <= r){
int mid = (l+r)/2;
if(v[mid] >x){
r = mid-1;
}
else if(v[mid] < x) l = mid+1;
else if(v[mid] == x){
ans = mid;
l = mid+1;
}
}
fout << ans << '\n';
}
else if(c == 1){
while(l <= r){
int mid = (l+r)/2;
if(v[mid] > x){
r =mid-1;
}
else if(v[mid] <= x){
ans = mid;
l = mid+1;
}
}
fout << ans << '\n';
}
else if(c == 2){
while(l <= r){
int mid = (l+r)/2;
if(v[mid] < x){
l =mid+1;
}
else if(v[mid] >= x){
ans = mid;
r = mid-1;
}
}
fout << ans << '\n';
}
}
}