Cod sursa(job #1885802)

Utilizator aditoma2001Toma Adrian aditoma2001 Data 20 februarie 2017 13:24:22
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

int caut_bin(vector <int> v,int x)
{
    int i=0;
    for (long long step=pow(2,20);step>=1;step/=2)
    {
        if (i+step<=v.size()&&v[i+step]<=x) i+=step;
    }
    return i;
}
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int main()
{
    int n,x,t,m;
    f>>n;
    vector <int> v(n+1,0);
    for (int i=0;i<n;++i) f>>v[i];
    f>>m;
    for (int i=0;i<m;++i)
    {
        f>>t>>x;
        if (t==1)
        {
            g<<caut_bin(v,x)+1<<'\n';
        }
        if (t==2)
        {
            g<<caut_bin(v,x-1)+2<<'\n';
        }
        if (t==0)
        {
            if (caut_bin(v,x)==v[caut_bin(v,x)-1]) g<<x+1<<'\n';
            else g<<-1<<'\n';
        }
    }
}