Pagini recente » Cod sursa (job #2330146) | Cod sursa (job #1503612) | Cod sursa (job #2283555) | Cod sursa (job #827427) | Cod sursa (job #2269967)
#include <fstream>
using namespace std;
const int L = 16;
const int N = 100001;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int v[N], n;
int caut0(int x)
{
int r = 0, pas = 1 << L;
while (pas > 0)
{
if ( r + pas <= n && v[r + pas] <= x)
{
r+= pas;
}
pas/= 2;
}
if (v[r] < x)
{
r = -1;
}
return r;
}
int caut1(int x)
{
int r = 0, pas = 1 << L;
while (pas > 0)
{
if ( r + pas <= n && v[r + pas] <= x)
{
r+= pas;
}
pas/= 2;
}
return r;
}
int caut2(int x)
{
int r = 0, pas = 1 << L;
while (pas > 0)
{
if ( r + pas <= n && v[r + pas] < x)
{
r+= pas;
}
pas/= 2;
}
r++;
return r;
}
int main()
{
int m, t, x;
cin >> n;
for (int i = 1; i <= n; i++){
cin >> v[i];
}
cin >> m;
for (int i = 0;i < m; i++){
cin >> t >> x;
if (t == 0){
cout << caut0(x) << "\n";
}
else if (t == 1){
cout << caut1(x) << "\n";
}
else if (t == 2){
cout << caut2(x) << "\n";
}
}
return 0;
}