Pagini recente » anudsfhnfdsa | Borderou de evaluare (job #366423) | Diferente pentru utilizator/vladvaldez intre reviziile 5 si 6 | Cod sursa (job #1323319)
#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(),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,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;
}
}
}