Pagini recente » Cod sursa (job #2545450) | Cod sursa (job #1129965) | Cod sursa (job #2863709) | Cod sursa (job #3209026) | Cod sursa (job #2031155)
#include<iostream>;
using namespace std;
int main()
{
int n, m, left, right, var, array[100001], caz, number, mid;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> var;
array[i] = var;
}
cin >> m;
for (int i = 0; i < m; i++)
{
left = array[1];
right = array[n];
cin >> caz >> number;
if (caz == 0)
{
bool go = true;
while (go == true)
{
mid = left + (right - left) / 2;
if (mid == left)
{
int answer = -1;
if (array[left] == number)
answer = left;
if (array[right] == number)
answer = right;
cout << answer <<endl;
go = false;
}
if (number >= array[mid])
{
left = mid;
}
else
{
right = mid;
}
}
}
if (caz == 1)
{
bool go = true;
while (go == true)
{
mid = left + (right - left) / 2;
if (mid == left)
{
int answer = left;
if (array[right] <= number)
answer = right;
cout << answer << endl;
go = false;
}
if (number >= array[mid])
{
left = mid;
}
else
{
right = mid;
}
}
}
if (caz == 2)
{
bool go = true;
while (go == true)
{
mid = left + (right - left) / 2;
if (mid == left)
{
int answer = right;
if (array[left] >= number)
answer = left;
cout << answer << endl;
go = false;
}
if (number > array[mid])
{
left = mid;
}
else
{
right = mid;
}
}
}
}
return 0;
}