Pagini recente » Cod sursa (job #432500) | Cod sursa (job #1711320) | Cod sursa (job #598720) | Cod sursa (job #109411) | Cod sursa (job #2138205)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,r,v[100001],x,y,t;
int binarysearh0(int q,int w,int k)
{
int m;
while(q<=w)
{
m=(q+w)/2;
if(v[m]<=k)
q=m+1;
else
w=m-1;
}
m=(q+w)/2;
if(v[m]>k)
m--;
if(v[m]==k)
return m;
return -1;
}
int binarysearch1(int q,int w,int k)
{
int m;
while(q<w)
{
m=(q+w)/2;
if(v[m]<=k)
q=m+1;
else
w=m;
}
m=(q+w)/2;
if(v[m]>k)
m--;
return m;
}
int binarysearch2(int q,int w,int k)
{
int m;
while(q<w)
{
m=(q+w)/2;
if(v[m]<k)
q=m+1;
else
w=m;
}
m=(q+w)/2;
if(v[m]<k)
m++;
return m;
}
int main()
{
f>>n;
for(int i=1; i<=n; i++)
f>>v[i];
f>>r;
for(int i=1; i<=r; i++)
{
f>>x>>y;
t=n;
if(x==0)
g<<binarysearh0(1,t,y)<<endl;
if(x==1)
g<<binarysearch1(1,t,y)<<endl;
if(x==2)
g<<binarysearch2(1,t,y)<<endl;
}
return 0;
}