Pagini recente » Profil David_Curca9 | Atasamentele paginii Profil dana_pop | Statistici Tataru Miruna-Alexia (Tataru_Miruna) | Monitorul de evaluare | Cod sursa (job #3366394)
#include <bits/stdc++.h>
using namespace std;
int c0(const vector<int>& v, int n, int x) {
int st = 0, dr = n - 1, ans = -1;
while (st <= dr) {
int mij = (st+dr)/2;
if (v[mij] == x) {
ans = mij+1;
st = mij + 1;
} else if (v[mij] < x) {
st = mij + 1;
} else {
dr = mij - 1;
}
}
return ans;
}
int c1(const vector<int>& v, int n, int x) {
int st = 0, dr = n - 1, ans = -1;
while (st <= dr) {
int mij = (st+dr)/2;
if (v[mij] <= x) {
ans = mij+1;
st = mij + 1;
} else {
dr = mij - 1;
}
}
return ans;
}
int c2(const vector<int>& v, int n, int x) {
int st = 0, dr = n - 1, ans = -1;
while (st <= dr) {
int mij = (st+dr)/2;
if (v[mij] >= x) {
ans = mij+1;
dr = mij-1;
} else {
st = mij+1;
}
}
return ans;
}
int main(){
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int n;
cin>>n;
vector<int> v(n);
for(int i = 0; i<n; i++){
cin>>v[i];
}
int q;
cin>>q;
while(q--){
int c, nr;
cin>>c>>nr;
if(c==0){
cout<<c0(v, n, nr)<<"\n";
}else if(c==1){
cout<<c1(v, n, nr)<<"\n";
}else{
cout<<c2(v, n, nr)<<"\n";
}
}
}