Pagini recente » Cod sursa (job #1021521) | Cod sursa (job #714757) | Cod sursa (job #1646389) | Cod sursa (job #1115144) | Cod sursa (job #1324923)
using namespace std;
#include <vector>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
vector <int> v;
int binarySearch(vector <int> &v, int x)
{
int lo=0, hi=v.size();
int mid;
while(hi-lo>1)
{
mid=lo+(hi-lo)/2;
if(v[mid]<=x)
lo=mid;
else hi=mid;
}
return lo;
}
int binarySearch2(vector <int> &v, int x)
{
int lo=-1, hi=v.size()-1;
int mid;
while(hi-lo>1)
{
mid=lo+(hi-lo)/2;
if(v[mid]<x)
lo=mid;
else hi=mid;
}
return hi;
}
int main()
{
int N,x,y,q;
f>>N;
while(N--)
{
f>>x;
v.push_back(x);
}
int T;
f>>T;
while(T--)
{
f>>q>>x;
switch(q)
{
case 0:
y=binarySearch(v,x);
if(v[y]==x) g<<(y+1)<<'\n';
else g<<-1<<'\n'; break;
case 1:
y=binarySearch(v,x);
g<<(y+1)<<'\n'; break;
case 2:
y=binarySearch2(v,x);
g<<(y+1)<<'\n'; break;
}
}
}