Pagini recente » Cod sursa (job #2711911) | Cod sursa (job #2823690) | Cod sursa (job #852859) | Cod sursa (job #308023) | Cod sursa (job #2544403)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m;
int numere[100005];
int caut_bin(int element, int operatie)
{
int st = 0, dr = n - 1, m;
while(st != dr)
{
m = (st + dr)/2;
if(numere[m] < element)
st = m + 1;
else dr = m;
}
if(operatie == 0)
{
if(numere[st] != element)
return -1;
else
{
while(numere[st] == element && st < n)
st++;
return st - 1;
}
}
if(operatie == 1)
{
if(numere[st] == element)
{
while(numere[st] == element && st < n)
st++;
return st - 1;
}
else
{
return st - 1;
}
}
else
{
if(numere[st] == element)
{
while(numere[st] == element && st >= 0)
st--;
return st + 1;
}
else
{
dr = numere[st];
while(numere[st] == dr && st >= 0)
st--;
return st + 1;
}
}
}
int main()
{
int x, i, op, y;
fin >> n;
for(i = 0; i < n; i++)
fin >> numere[i];
fin >> m;
for(i = 0; i < m; i++)
{
fin >> op >> x;
y = caut_bin(x, op);
if(y == -1)
fout << "-1" << '\n';
else
fout << y + 1 << '\n';
}
return 0;
}