Pagini recente » Cod sursa (job #2446847) | Cod sursa (job #2182999) | Cod sursa (job #177215) | Cod sursa (job #960994) | Cod sursa (job #627975)
Cod sursa(job #627975)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100002] , n , m , x , tip;
int cautbin0(int left,int right)
{
int mid = left + (right-left)/2;
if(left<=right)
{
if(v[mid]<=x)
return cautbin0(mid+1,right);
else
return cautbin0(left,mid-1);
}
if(v[mid]>x) mid--;
if(v[mid]==x) return mid;
return -1;
}
int cautbin1(int left,int right)
{
int mid = left + (right-left)/2;
if(left<right)
{
if(v[mid]<=x)
return cautbin1(mid+1,right);
else
return cautbin1(left,mid);
}
if(v[mid]>x) mid--;
return mid;
}
int cautbin2(int left,int right)
{
int mid = left + (right-left)/2;
if(left<right)
{
if(v[mid]<x)
return cautbin2(mid+1,right);
else
return cautbin2(left,mid);
}
if(v[mid]<x) mid++;
return mid;
}
int main()
{
fin>>n;
for(int i=1;i<=n;++i)
fin>>v[i];
fin>>m;
for(;m;m--)
{
fin>>tip>>x;
if(tip==0) fout<<cautbin0(1,n)<<'\n';
else
if(tip==1) fout<<cautbin1(1,n)<<'\n';
else
if(tip==2) fout<<cautbin2(1,n)<<'\n';
}
return 0;
}