Pagini recente » Cod sursa (job #792971) | Cod sursa (job #2461892) | Cod sursa (job #1690054) | Cod sursa (job #234425) | Cod sursa (job #523747)
Cod sursa(job #523747)
#include<iostream>
#include<fstream>
using namespace std;
int n, x[100000];
int cautbin_zero(int p)
{
int m;
int st=1;
int dr=n;
while(st<=dr)
{
m=(st+dr)/2;
if(x[m]<=p)
st=m+1;
else dr=m-1;
}
m=(st+dr)/2;
if(x[m]==p)
return m;
return -1;
}
int cautbin_unu(int p)
{
int m;
int st=1;
int dr=n;
while(st<=dr)
{
m=(st+dr)/2;
if(x[m]<=p)
st=m+1;
else dr=m-1;
}
m=(st+dr)/2;
return m;
}
int cautbin_doi(int p)
{
int m;
int st=1;
int dr=n;
while(st<=dr)
{
m=(st+dr)/2;
if(x[m]<p)
st=m+1;
else dr=m-1;
}
m=(st+dr)/2;
return m+1;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int i,t;
int r,y;
f>>n;
for(i=1;i<=n;i++)
f>>x[i];
f>>t;
for(i=1;i<=t;i++)
{
f>>r>>y;
if(r==0)
g<<cautbin_zero(y)<<'\n';
if(r==1)
g<<cautbin_unu(y)<<'\n';
if(r==2)
g<<cautbin_doi(y)<<'\n';
}
}