Pagini recente » Cod sursa (job #1265278) | Cod sursa (job #960784) | Statistici Oasa Alexandru (xxxy) | Cod sursa (job #2613769) | Cod sursa (job #2778176)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main()
{
int n,m,B[100005],V[100005],M[100005],sol;
fin>>n;
for(int i = 1;i<=n;i++)
{
fin>>V[i];
}
fin>>m;
for(int i = 1;i<=m;i++)
{
fin>>M[i];
fin>>B[i];
}
for(int i = 1;i<=m;i++)
{
int st = 1;
int dr = n;
sol = -1;
while(st<=dr)
{
int mid = st + (dr-st)/2;
if(M[i] == 0)
{
if(V[mid] == B[i])
{
sol = mid;
st = mid + 1;
}
if(V[mid] < B[i])
{
st = mid + 1;
}
if(V[mid] > B[i])
{
dr = mid - 1;
}
}
if(M[i] == 1)
{
if(V[mid] > B[i])
{
dr = mid - 1;
}
if(V[mid] <= B[i])
{
sol = mid;
st = mid + 1;
}
}
if(M[i] == 2)
{
if(V[mid] < B[i])
{
st = mid + 1;
}
if(V[mid] >= B[i])
{
sol = mid;
dr = mid - 1;
}
}
}
out<<sol<<' ';
}
}