Pagini recente » Cod sursa (job #2462273) | Cod sursa (job #3280640) | Cod sursa (job #2487713) | Cod sursa (job #1107507) | Cod sursa (job #3170558)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
vector<int> a;
int n, m;
void citire() {
cin >> n;
for(int i = 0; i < n; i++) {
int x;
cin >> x;
a.push_back(x);
}
cin >> m;
}
void cautBin01(int x, int c) {
int p, i;
for(p = 1; p < n; p <<= 1);
for(i = 0; p; p >>= 1)
if(i + p < n && a[i + p] <= x)
i += p;
if(!c) {
if(a[i] == x)
cout << i + 1;
else
cout << -1;
} else
cout << i + 1;
}
void cautBin2(int x) {
int p, i;
for(p = 1; p < n; p <<= 1);
for(i = 0; p; p >>= 1)
if(i + p < n && a[i + p] < x)
i += p;
cout << i + 2;
}
void rezolvare() {
for(int i = 1; i <= m; i++) {
int x, c;
cin >> c >> x;
if(!c || c == 1)
cautBin01(x, c);
else
cautBin2(x);
cout << "\n";
}
}
int main() {
citire();
rezolvare();
return 0;
}