Pagini recente » Cod sursa (job #3289186) | Cod sursa (job #2464143) | Cod sursa (job #2430662) | Cod sursa (job #447839) | Cod sursa (job #1309122)
#include <vector>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
vector <int> v;
int p=1;
int binarysearch(vector <int> &v, int x)
{
int N=v.size();
int i,step=p;
for(i=-1;step;step=step>>1)
if(i+step<N && v[i+step]<=x) i=i+step;
return i;
}
int binarysearch2(vector <int> &v, int x)
{
int N=v.size();
int i,step=p;
for(i=-1;step;step=step>>1)
if(i+step<N && v[i+step]<x) i=i+step;
return i+1;
}
int main()
{
int N,x,y,q;
f>>N;
while((p<<1)<=N) p=p<<1;
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;
}
}
}