Cod sursa(job #1606330)

Utilizator Vlad1111Sbengheci Vlad-Andrei Vlad1111 Data 20 februarie 2016 09:44:42
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

vector<int>a;
int step,st;
int n,m,x,i,y;

int cau()
{
    for(i=0,st=step; st; st>>=1)
        if(i+st<n && a[i+st]<=y)
            i+=st;
    if(a[i]==y || x!=0)
        return i+1+x/2-(a[i]==y);
    else return -1;
}


int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);

    scanf("%d",&n);

    for(step=1; step<n; step<<=1);

    for(i=0; i<n; i++)
    {
        scanf("%d",&m);
        a.push_back(m);
    }

    scanf("%d",&m);


    for(int opr=0; opr<m; opr++)
    {
        scanf("%d",&x);
        scanf("%d",&y);
        printf("%d\n",cau());
    }
    return 0;
}