Pagini recente » Cod sursa (job #850197) | Cod sursa (job #328624) | Cod sursa (job #1557837) | Cod sursa (job #871877) | Cod sursa (job #2338123)
#include <fstream>
#include <algorithm>
using namespace std;
int v[100010], n, stanga, putere, op, x, i, m;
ifstream fin ("cautbin.in");
ofstream fout("cautbin.out");
int main () {
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
fin>>m;
for (i=1;i<=m;i++) {
fin>>op>>x;
if (op == 0 || op == 1) {
/// cea mai mare pozitie pe care se afla x sau -1
stanga = 1; putere = (1<<17);
while (putere) {
if (stanga + putere <= n) {
if (v[stanga+putere] <= x)
stanga += putere;
}
putere /= 2;
}
if (v[stanga] == x)
fout<<stanga<<"\n";
else
fout<<"-1\n";
}
if (op == 2) {
/// prima pozitie pe care este x si daca nu, unde e un
/// numar mai mare ca x
putere = (1<<17);
stanga = 1;
while (putere) {
if (stanga + putere <= n)
if (v[stanga + putere] < x)
stanga += putere;
putere /= 2;
}
fout<<stanga+1<<"\n";
}
}
return 0;
}