Pagini recente » Cod sursa (job #1998935) | Cod sursa (job #1139769) | Cod sursa (job #248733) | Cod sursa (job #722948) | Cod sursa (job #2011449)
//#include <iostream>
#include <fstream>
using namespace std;
int v[100010],y;
int s1 (int a, int b)
{
int m;
while (a <= b)
{
m = (a + b) / 2;
if (v[m] <= y)
a = m + 1;
else
b = m - 1;
}
m = (a + b) / 2;
if (v[m] > y) m --;
if (v[m] == y)
return m;
return -1;
}
int s2 (int a, int b)
{
int m, n = b;
while (a < b)
{
m = (a + b) / 2;
if (v[m] <= y)
a = m + 1;
else
b = m;
}
m = (a + b) / 2;
if (v[m] > y)
-- m;
return m;
}
int s3 (int a, int b)
{
int m;
while (a < b)
{
m = (a + b) / 2;
if (v[m] < y)
a = m + 1;
else
b = m;
}
m = (a + b) / 2;
if (v[m] < y)
++ m;
return m;
}
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int main ()
{
int i, n, m,x;
cin>>n;
for (i = 1; i <= n; ++ i)
cin>>v[i];
cin>>m;
for(i=1; i<=m; i++)
{
cin>>x>>y;
if (x == 0)
cout<<s1(1, n)<<endl;
if (x == 1)
cout<<s2(1, n)<<endl;
if (x == 2)
cout<<s3(1, n)<<endl;
}
return 0;
}