Pagini recente » Cod sursa (job #2783788) | Cod sursa (job #2627522) | Cod sursa (job #494386) | Cod sursa (job #1039243) | Cod sursa (job #3278697)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int n;
int a[200000];
int bs0(int x)
{
int l = 0;
int r = n - 1;
int m = 0;
int answer = -2;
while (l <= r)
{
m = (l + r) / 2;
if (a[m] > x)
{
r = m - 1;
}
else
{
if (a[m] == x) {answer = m;}
l = m + 1;
}
}
return answer;
}
int bs1(int x)
{
int l = 0;
int r = n - 1;
int m = 0;
int answer = 0;
while (l <= r)
{
m = (l + r) / 2;
if (a[m] > x)
{
r = m - 1;
}
else
{
answer = m;
l = m + 1;
}
}
return answer;
}
int bs2(int x)
{
int l = 0;
int r = n - 1;
int m = 0;
int answer = 0;
while (l <= r)
{
m = (l + r) / 2;
if (a[m] >= x)
{
answer = m;
r = m - 1;
}
else
{
l = m + 1;
}
}
return answer;
}
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int t = 0;
int x = 0;
int y = 0;
int j = 0;
fin >> n;
for (int i = 0; i < n; i++)
{
fin >> a[i];
}
fin >> t;
for (int i = 0; i < t; i++)
{
fin >> x >> y;
if (x == 0) {j = bs0(y);}
if (x == 1) {j = bs1(y);}
if (x == 2) {j = bs2(y);}
fout << j + 1;
}
}