Pagini recente » Cod sursa (job #2670135) | Cod sursa (job #1556108) | Cod sursa (job #2908112) | Cod sursa (job #342917) | Cod sursa (job #536569)
Cod sursa(job #536569)
#include <cstdio>
using namespace std;
#define NMAX 100001
int n, m, A[NMAX];
int answer12(int val, int type) {
int step, i;
for (step=1;step<n;step<<=1);
for (i=0;step;step>>=1) {
if (i+step <= n && A[i+step] <= val) {
i+=step;
}
}
if (type == 2 || A[i] == val) return i;
return -1;
}
int answer3(int val) {
int i, step;
for (step=1;step<n;step<<=1);
for (i=n;step;step>>=1) {
if (i-step > 0 && A[i-step]>=val) {
i-=step;
}
}
return i;
}
int main() {
int i, type, x, res;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++) {
scanf("%d",&A[i]);
}
scanf("%d",&m);
for (i=1;i<=m;i++) {
scanf("%d %d",&type,&x);
if (type < 2) {
res = answer12(x,type);
}
else res = answer3(x);
printf("%d\n",res);
}
return 0;
}