Pagini recente » Cod sursa (job #423354) | Cod sursa (job #3228341) | Cod sursa (job #2625272) | Cod sursa (job #45921) | Cod sursa (job #523761)
Cod sursa(job #523761)
#include<iostream>
#include<fstream>
using namespace std;
int a, x[100000];
int cautbin_zero(int p)
{
int m;
int st=1;
int dr=a;
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=a;
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=a;
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>>a;
for(i=1;i<=a;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';
}
}