Pagini recente » Borderou de evaluare (job #315034) | Cod sursa (job #211905) | Cod sursa (job #2062405)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100050],n, m;
void citire ()
{
int i;
f>>n;
for(i=1;i<=n; i++) f>>v[i];
}
int cautb0 (int x)
{
int mid, li=1, ls=n;
while (li<= ls)
{
mid = (li+ ls) / 2;
if (v[mid] <= x)
li= mid + 1;
else
ls = mid - 1;
}
mid = (li+ ls) / 2;
if (v[mid] > x) mid --;
if (v[mid] == x)
return mid;
return -1;
}
int cautb1 (int x)
{ int li=1, ls=n;
int mid;
while (li< ls)
{
mid = (li+ ls) / 2;
if (v[mid] <= x)
li= mid + 1;
else
ls = mid;
}
mid = (li+ ls) / 2;
if (v[mid] > x)
-- mid;
return mid;
}
int cautb2 ( int x)
{
int mid, li=1, ls=n;
while (li< ls)
{
mid = (li+ ls) / 2;
if (v[mid] < x)
li= mid + 1;
else
ls = mid;
}
mid = (li+ ls) / 2;
if (v[mid] < x)
++ mid;
return mid;
}
int main ()
{ citire();
int x, op;
f>>m;
while (m --)
{
f>>op>>x;
if (op== 0)
g<<cautb0(x)<<endl;
if (op == 1)
g<<cautb1(x)<<endl;
if (op == 2)
g<<cautb2(x)<<endl;
}
}