Pagini recente » Cod sursa (job #2540979) | Cod sursa (job #944856) | Cod sursa (job #2440300) | Cod sursa (job #2740543) | Cod sursa (job #2336235)
#include <fstream>
#include <algorithm>
#define DIM 100000
using namespace std;
ofstream fout("cautbin.out");
char buff [DIM];
int p = DIM-1;
void inc(){
p++;
if (p == DIM){
fread (buff, 1, DIM, stdin);
p=0;
}
}
void read(int &x){
while (buff[p] < '0' || buff[p] > '9')
inc();
x = 0;
while (buff [p] >= '0' && buff[p] <= '9'){
x = 10*x + buff[p] - '0';
inc();
}
}
int n, v[100000], i, m, t, k, l;
int cb (int x){
int i, pas;
for (pas = 1;pas < n;pas <<= 1)
;
for (i = 0;pas;pas >>= 1)
if (i+pas < n && v[i+pas] <= x)
i += pas;
return i;
}
int main(){
freopen ("cautbin.in", "r", stdin);
read(n);
for (i = 0;i < n;i++){
read(v[i]);
}
read(m);
while (m){
m--;
read (t);
read (k);
if (t == 0){
l = cb(k);
if (v[l] == k)
fout << l+1 << '\n';
else fout << -1 << '\n';
}
else if (t == 1){
l = cb(k);
if (v[l] == k)
fout << l+1 << '\n';
else fout << -1 << '\n';
}
else {
l = cb(k);
if (v[l] == k)
fout << l-1 << '\n';
else fout << -1 << '\n';
}
}
return 0;
}