Pagini recente » Cod sursa (job #592709) | Cod sursa (job #2376785) | Cod sursa (job #149663) | Cod sursa (job #1117016) | Cod sursa (job #2908310)
#include <fstream>
int main() {
std::ifstream fin("cautbin.in");
std::ofstream fout("cautbin.out");
unsigned int n;
fin >> n;
unsigned int vec[100000];
for(unsigned int i = 0; i < n; ++i)
fin >> vec[i];
unsigned int m;
fin >> m;
unsigned int pow = 1;
while(pow < n) {
pow <<= 1;
}
for(unsigned int i = 0; i < m; ++i) {
unsigned int cer, x;
fin >> cer >> x;
switch(cer) {
case 0:
{
unsigned int r = 0, pas = pow;
while(pas) {
if(r + pas < n && vec[r + pas] <= x)
r += pas;
pas >>= 1;
}
if(vec[r] != x)
fout << "-1\n";
else
fout << (r + 1) << '\n';
break;
}
case 1:
{
unsigned int r = 0, pas = pow;
while(pas) {
if(r + pas < n && vec[r + pas] <= x)
r += pas;
pas >>= 1;
}
fout << (r + 1) << '\n';
break;
}
case 2:
{
unsigned int r = 0, pas = pow;
while(pas) {
if(r + pas < n && vec[r + pas] < x)
r += pas;
pas >>= 1;
}
if(x < vec[0])
fout << "1\n";
else
fout << (r + 2) << '\n';
break;
}
default:
break;
}
}
fin.close();
fout.close();
return 0;
}