Pagini recente » Cod sursa (job #211860) | Cod sursa (job #2742904) | Cod sursa (job #2912815) | Cod sursa (job #1394702) | Cod sursa (job #2386911)
#include <fstream>
#include <vector>
using namespace std;
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()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
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 << '\n';
else g << raspuns+1 << '\n';
}
f.close();
g.close();
}