Pagini recente » Cod sursa (job #224906) | Cod sursa (job #667572) | Cod sursa (job #1698021) | Cod sursa (job #1674314) | Cod sursa (job #1113744)
#include<fstream>
using namespace std;
int n, m, i, v[100000], val, opt;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int f0(int x) {
int l = 0, r = n, m, poz = -2;
while(l <= r) {
m = l + (r-l)/2;
if(x < v[m]) r = m-1;
else {
if(x > v[m]) l = m+1;
else poz = m, l = m+1;
}
}
return poz;
}
int f1(int x) {
int l = 0, r = n, m, poz = -1;
while(l <= r) {
m = l + (r-l)/2;
if(v[m] > x) r = m-1;
else poz = m, l = m+1;
}
return poz;
}
int f2(int x) {
int l = 0, r = n, m, poz = -1;
while(l <= r) {
m = l + (r-l)/2;
if(v[m] < x) l = m+1;
else poz = m, r = m-1;
}
return poz;
}
int main() {
fin >> n;
for(i = 0; i < n; i++) fin >> v[i];
fin >> m;
n--;
for(i = 0; i < m; i++) {
fin >> opt >> val;
switch(opt) {
case 0:
fout << f0(val) + 1 << "\n";
break;
case 1:
fout << f1(val) + 1 << "\n";
break;
case 2:
fout << f2(val) + 1 << '\n';
}
}
return 0;
}