Pagini recente » Cod sursa (job #571491) | Istoria paginii runda/oji_2012_11-12_sim/clasament | Cod sursa (job #160930) | Autentificare | Cod sursa (job #2002398)
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[25002],n;
void b0(int x, int lo, int hi)
{
int mi,sol=-1;
while (lo <= hi)
{
mi=lo+(hi-lo)/2;
if (v[mi]>x)
hi=mi-1;
else
{
sol=mi;
lo=mi+1;
}
}
cout << sol << "\n";
}
void b1(int x, int lo, int hi)
{
int mi;
while (lo<hi)
{
mi=lo+(hi-lo+1)/2;
if (v[mi]>x)
hi=mi-1;
else
lo=mi;
}
cout << lo << "\n";
}
void b2(int x, int lo, int hi)
{
int mi;
while (lo<hi)
{
mi=lo+(hi-lo)/2;
if (v[mi]<x)
lo=mi+1;
else
hi=mi;
}
cout << hi << "\n";
}
int main()
{
cin >> n;
for (int i=1;i<=n;i++)
cin >> v[i];
int q;
cin >> q;
int tip,nr;
for(;q;--q)
{
cin >> tip >> nr;
switch(tip)
{
case 0: {b0(nr,1,n);break;}
case 1: {b1(nr,1,n);break;}
case 2: {b2(nr,1,n);break;}
}
}
return 0;
}