Pagini recente » Cod sursa (job #650099) | Cod sursa (job #1681562) | Cod sursa (job #558142) | Cod sursa (job #2047525) | Cod sursa (job #1733407)
#include <iostream>
#include <fstream>
using namespace std;
long n,m,v[100002];
ifstream f ("cautbin.in");
ofstream t ("cautbin.out");
int caut_bin_up(int x)
{
int st=1,dr=n;
while(st<=dr)
{
int mid=(st+dr)/2;
if(x>=v[mid]) st=mid+1;
else dr=mid-1;
}
return dr+1;
}
int caut_bin_low(int x)
{
int st=1,dr=n;
while(st<=dr)
{
int mid=(st+dr)/2;
if(x<=v[mid]) dr=mid-1;
else st=mid+1;
}
return st+1;
}
int main()
{
long q,x,poz;
f>>n;
for (long i=0; i<n; ++i)
f>>v[i];
f>>m;
for (long i=0; i<m; ++i)
{
f>>q>>x;
if (q==0){
poz=caut_bin_up(x);
if (v[poz]==x) t<<poz<<'\n';
else t<<"-1"<<'\n';}
else if (q==1) t<<caut_bin_up(x)<<'\n';
else if (q==2) t<<caut_bin_low(x)<<'\n';
}
return 0;
}