Cod sursa(job #1885813)

Utilizator aditoma2001Toma Adrian aditoma2001 Data 20 februarie 2017 13:35:01
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 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';
            }
    }
}