Pagini recente » Cod sursa (job #2228920) | Cod sursa (job #87965) | Cod sursa (job #432612) | Cod sursa (job #2691291) | Cod sursa (job #2145038)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
const int Nmax = 100005;
int n, Q, a[Nmax];
inline void Actualizare(int & x, int & y, int p)
{
x = 1;
y = n;
p = - 1;
}
int main()
{
int x, op, stg, drp, poz, mij;
fin >> n;
for(int i = 1 ; i <= n ; i++)
{
fin >> x;
a[i] = x;
}
fin >> Q;
while(Q -- )
{
fin >> op >> x;
Actualizare(stg, drp, poz);
if(op == 0)
{
while(stg <= drp)
{
mij = (stg + drp) / 2;
if(a[mij] == x)
{
poz = mij;
stg = mij + 1;
}
else if(a[mij] < x)
stg = mij + 1;
else drp = mij - 1;
}
fout << poz << "\n";
}
else if(op == 1)
{
while(stg <= drp)
{
mij = (stg + drp) / 2;
if(a[mij] <= x)
{
poz = mij;
stg = mij + 1;
}
else drp = mij - 1;
}
fout << poz << "\n";
}
else
{
while(stg <= drp)
{
mij = (stg + drp) / 2;
if(a[mij] >= x)
{
poz = mij;
drp = mij - 1;
}
else stg = mij + 1;
}
fout << poz << "\n";
}
}
fin.close();
fout.close();
return 0;
}