Pagini recente » Cod sursa (job #1649984) | Cod sursa (job #1154136) | Cod sursa (job #2634673) | Cod sursa (job #1322842) | Cod sursa (job #2031176)
#include<iostream>;
#include<fstream>
using namespace std;
int main()
{
int n, m, left, right, var, array[100001], caz, number, mid;
ifstream intrare;
ofstream iesire;
intrare.open("cautbin.in");
iesire.open("cautbin.out");
intrare >> n;
for (int i = 1; i <= n; i++)
{
intrare >> var;
array[i] = var;
}
intrare >> m;
for (int i = 0; i < m; i++)
{
left = array[1];
right = array[n];
intrare >> 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;
iesire << 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;
iesire << 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;
iesire << answer << endl;
go = false;
}
if (number > array[mid])
{
left = mid;
}
else
{
right = mid;
}
}
}
}
return 0;
}