Pagini recente » Rating Dinu Serbanescu (dinu_serbanescu) | Cod sursa (job #2579062) | Cod sursa (job #878627) | Cod sursa (job #925238) | Cod sursa (job #1691142)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,m,intrebare;
int v[100000],l,r,mi,x;
inline void cerinta_1()
{
fin>>x;
while(l<r)
{
mi=l+(r-l)/2;
if(l==mi)
break;
if(v[mi]<=x)
{
l=mi;
}
else
{
r=mi;
}
}
fout<<l<<'\n';
}
inline void cerinta_2()
{
fin>>x;
while(l<r)
{
mi=l+(r-l)/2;
if(l==mi)
break;
if(v[mi]<=x)
{
l=mi;
}
else
{
r=mi;
}
}
fout<<l<<'\n';
}
inline void cerinta_3()
{
fin>>x;
while(l<r)
{
mi=l+(r-l)/2;
if(r==mi+1)
break;
if(v[mi]>=x)
{
r=mi;
}
else
{
l=mi;
}
}
fout<<r<<'\n';
}
inline void citire()
{
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
fin>>m;
for(int i=0; i<m; i++)
{
l=0;
r=n;
fin>>intrebare;
if(intrebare==0)
cerinta_1();
else if(intrebare==1)
cerinta_2();
else if(intrebare==2)
cerinta_3();
}
}
int main()
{
citire();
return 0;
}