Pagini recente » Cod sursa (job #1651738) | Arhiva de probleme | Cod sursa (job #897250) | Rating Codrin Nitu (c0drin) | Cod sursa (job #1209920)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100005];
int n,mid;
void caut0(int lo, int hi, int x)
{
int sol=-1;
while(lo<=hi)
{
mid=(lo+hi)/2;
if(v[mid]<x) lo=mid+1;
else
{
if(v[mid]>x)hi=mid-1;
else {sol=mid;lo=mid+1;}
}
}
fout<<sol<<"\n";
}
void caut1(int lo, int hi , int x)
{
int sol;
while(lo<hi)
{
mid=(lo+hi)/2;
if(v[mid]>x) hi=mid;
else {sol=mid; lo=mid+1;}
}
fout<<sol<<"\n";
}
void caut2(int lo, int hi, int x)
{
while(lo<hi)
{
mid=(lo+hi)/2;
if(v[mid]>=x) hi=mid;
else lo=mid+1;
}
fout<<lo<<"\n";
}
int main()
{
int m,a,b;
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
fin>>m;
for(int i=1;i<=m;i++)
{
fin>>a>>b;
if(a==0) caut0(1,n,b);
else if(a==1) caut1(1,n,b);
else caut2(1,n,b);
}
}