Pagini recente » Cod sursa (job #2941307) | Cod sursa (job #78764) | Cod sursa (job #635875) | Cod sursa (job #2320414) | Cod sursa (job #2607930)
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n;
fin >> n;
uint32_t* v;
v = new uint32_t[n];
for (int i = 0; i < n; i++)
fin >> v[i];
int m;
fin >> m;
for (int i = 0; i < m; i++)
{
uint32_t task, x;
fin >> task >> x;
int sol = 0;
if (task == 2)
sol = n - 1;
for (uint32_t j = (1 << 30); j > 0; j >>= 1)
{
if (task != 2)
{
if (sol + j < n)
if (v[sol + j] <= x)
sol += j;
}
else
{
if (sol > j)
if (v[sol - j] >= x)
sol -= j;
}
}
int result = sol;
switch (task)
{
case 0:
if (v[sol] != x)
result = 0;
}
fout << result + 1 << endl;
}
fout.close();
fin.close();
return 0;
}