Pagini recente » Cod sursa (job #252785) | Cod sursa (job #2481464) | Cod sursa (job #314850) | Cod sursa (job #2149588) | Cod sursa (job #2767897)
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int v[100001];
int main()
{
int N;
in >> N;
for(int i = 1; i <= N; i++)
{
in >> v[i];
}
int M;
in >> M;
for(int i = 1; i <= M; i++)
{
int q, x;
in >> q >> x;
int st = 1, dr = N, poz = 0;
while(st <= dr)
{
int mij = (st +dr) / 2;
if(v[mij] >= x)
{
poz = mij;
dr = mij - 1;
}
else
{
st = mij + 1;
}
}
if(q == 0)
{
if(v[poz] != x)
out << -1 << endl;
else
{
while(v[poz] == v[poz+1])
poz++;
out << poz << endl;
}
}
if(q == 1)
{
if(v[poz] == x)
{
while(v[poz] == v[poz+1])
poz++;
out << poz << endl;
}
else
out << poz + 1 << endl;
}
if(q == 2)
{
if(v[poz] == x)
{
while(v[poz] == v[poz-1])
poz--;
out << poz << endl;
}
else
out << poz << endl;
}
}
}