Pagini recente » Cod sursa (job #620375) | Cod sursa (job #1473912) | Cod sursa (job #2899630) | Cod sursa (job #940174) | Cod sursa (job #1053912)
#include <iostream>
#include <fstream>
using namespace std;
#define maxInput 100005
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,v[maxInput];
int bin0(int p,int q,int x)
{
int mid;
while(p<=q)
{
mid=(p+q)/2;
if(v[mid]<=x)
p=mid+1;
else
q=mid-1;
}
mid=(p+q)/2;
if(v[mid]>x) mid--;
if(v[mid]==x) return mid;
return -1;
}
int bin1(int p,int q,int x)
{
int mid;
while(p<q)
{
mid=(p+q)/2;
if(v[mid]<=x)
p=mid+1;
else
q=mid;
}
mid=(p+q)/2;
if(v[mid]>x) --mid;
return mid;
}
int bin2(int p,int q,int x)
{
int mid;
while(p<q)
{
mid=(p+q)/2;
if(v[mid]<x)
p=mid+1;
else
q=mid;
}
mid=(p+q)/2;
if(v[mid]<x) ++mid;
return mid;
}
int main()
{
int i,t,x,re; f>>n;
for(i=1; i<=n ;i++)
f>>v[i];
f>>m;
for(i=1; i<=m ;i++)
{
f>>t; f>>x;
switch(t)
{
case 0:
re=bin0(1,n,x);
g<<re<<endl;
break;
case 1:
re=bin1(1,n,x);
g<<re<<endl;
break;
case 2:
re=bin2(1,n,x);
g<<re<<endl;
break;
}
}
return 0;
}