Cod sursa(job #3165346)

Utilizator devieiDevid Mecu deviei Data 5 noiembrie 2023 23:40:46
Problema Cautare binara Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <stdio.h>
#include <stdlib.h>

#define maxim 100005

int a[maxim], n;
int tip, x, i, copie_step;
int main(void)
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; i++)
   scanf("%d", &a[i]);
int step;
for(step = 1; step <= n; step<<=1);
int m;
scanf("%d", &m);
for(; m; --m)
{
    scanf("%d%d", &tip, &x);
    if(tip < 2)
    {
        for(copie_step = step, i = 0; copie_step; copie_step>>=1)
            if(i + copie_step <= n && a[i + copie_step] <= x)
                i = i + copie_step;
        if(tip == 0 && a[i] != x) 
           printf("-1\n");
        else
            printf("%d\n", i);
        continue;
    }   
        for(copie_step = step, i = n; copie_step; copie_step>>=1)
            if(i - copie_step > 0 && a[i - copie_step] >=x)
                i = i - copie_step;
        printf("%d\n", i);      
}
return 0;
}