Pagini recente » Cod sursa (job #2623523) | Cod sursa (job #39335) | Cod sursa (job #2614815) | Cod sursa (job #2594369) | Cod sursa (job #3142402)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n;
void solve_1(int x, vector<int>& v) {
int st=0, dr=n-1, mid;
while(st<=dr) {
mid=(st+dr)/2;
if(v[mid]<=x)
st=mid+1;
else if(v[mid]>x)
dr=mid-1;
}
if(v[st-1]==x)
fout << st;
else
fout << -1;
}
void solve_2(int x, vector<int>& v) {
int st=0, dr=n-1, mid;
while(st<=dr) {
mid=(st+dr)/2;
if(v[mid]<=x)
st=mid+1;
else
dr=mid-1;
}
fout << st;
}
void solve_3(int x, vector<int>& v) {
int st=0, dr=n-1, mid;
while(st<=dr) {
mid=(st+dr)/2;
if(v[mid]>=x)
dr=mid-1;
else
st=mid+1;
}
fout << st+1;
}
int main() {
fin >> n;
vector<int> v(n);
for(auto& val : v)
fin >> val;
int m;
fin >> m;
while(m--){
int op, x;
fin >> op >> x;
if(op==0)
solve_1(x, v);
else if(op==1)
solve_2(x, v);
else
solve_3(x, v);
fout << '\n';
}
return 0;
}