Pagini recente » Cod sursa (job #2404389) | Cod sursa (job #825681) | Cod sursa (job #1020605) | Cod sursa (job #2909907) | Cod sursa (job #2386907)
#include <bits/stdc++.h>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int gasesteCelMaiStanga(vector<int> &vect, int x)
{
int st = 0;
int dr = vect.size()-1;
int mid;
while(st<=dr){
mid = (st+dr)/2;
if(x <= vect[mid])
dr = mid-1;
else st = mid+1;
}
return st;
}
int gasesteCelMaiDreapta(vector<int> &vect, int x)
{
int st = 0;
int dr = vect.size()-1;
int mid;
while(st<=dr){
mid = (st+dr)/2;
if(x >= vect[mid])
st = mid+1;
else dr = mid-1;
}
return dr;
}
int main()
{
int n; f >> n;
vector<int> vect(n);
for(int i = 0; i<n; i++)
f >> vect[i];
int q; f >> q;
for(int i = 0; i<q; i++){
int query, x; f >> query >> x;
int raspuns = -1;
if(query == 1 || query == 0){
raspuns = gasesteCelMaiDreapta(vect, x);
}
else raspuns = gasesteCelMaiStanga(vect, x);
if(query == 0 && vect[raspuns] != x) g << -1 << endl;
else g << raspuns+1 << endl;
}
}