Cod sursa(job #2682016)

Utilizator michael_blazemihai mihai michael_blaze Data 7 decembrie 2020 16:26:10
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.33 kb
#include <stdio.h>
#include <stdlib.h>
#define N 100010
int n, arr[N];

/*int solve0(int val){
    int i;
    for (i=1;i<=n && v[i]<val;++i);
    if (v[i]==val)
       return i;
    return -1;
}*/

int solve0(int val){
    int poz = -1;
    for (int i = 0;i < n;++ i)
        if (arr[i] == val)
            poz = i;

    return poz;
}

/*int solve1(int val){
    int i;
    for (i=1;i<=n && v[i]<=val;++i);
    return i-1;
}*/

int solve1(int val){
    int poz;

    for (int i = 0;i < n; ++ i) 
        if (arr[i] <= val)
            poz = i;

    return poz;
}

int solve2(int val){
    
    for (int i = 0; i < n; ++i)
        if (arr[i] >= val)
            return i;
}

int main(){
    int i,m,val,tip;
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    for (i=0;i<n;++i)
        scanf("%d",&arr[i]);
    scanf("%d",&m);
    while (m--){
          scanf("%d%d",&tip,&val);
          if (tip==0) {
             int temp = solve0(val);
             if (solve0(val) == -1)
                printf("%d\n", -1);
             else
                printf("%d\n", temp + 1);
          } else if (tip==1) 
            printf("%d\n", solve1(val) + 1);
          else   
            printf("%d\n", solve2(val) + 1);
           
    }          
    exit(0);
}