Pagini recente » Cod sursa (job #1271429) | Cod sursa (job #2510475) | Cod sursa (job #2743362) | Cod sursa (job #2583077) | Cod sursa (job #2121145)
#include <bits/stdc++.h>
using namespace std;
int v[100005];
void c0(int n, int x) {
int ans = 0;
for (int bit = 1<<30; bit > 0; bit = bit / 2) {
if (ans + bit <= n && v[ans + bit] <= x)
ans = ans + bit; }
if (v[ans] == x)
printf("%d\n", ans);
else
printf("-1\n"); }
void c1(int n, int x) {
int ans = 0;
for (int bit = 1<<30; bit > 0; bit = bit / 2) {
if (ans + bit <= n && v[ans + bit] <= x)
ans = ans + bit; }
printf("%d\n", ans); }
void c2(int n, int x) {
int ans = 0;
for (int bit = 1<<30; bit > 0; bit = bit / 2) {
if (ans + bit <= n && v[ans + bit] < x)
ans = ans + bit; }
printf("%d\n", ans + 1); }
int main(){
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
int n, m, q, x;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &v[i]); }
scanf("%d", &m);
for (int i = 1; i <= m; i++) {
scanf("%d %d", &q, &x);
if (q == 1)
c1(n, x);
else
if (q == 2)
c2(n, x);
else
c0(n, x); }
return 0; }