Cod sursa(job #1885826)

Utilizator aditoma2001Toma Adrian aditoma2001 Data 20 februarie 2017 13:43:53
Problema Cautare binara Scor 60
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 (int step=(1<<19);step>=1;step/=2)
    {
        if (i+step<v.size()&&v[i+step]<=x) i+=step;
    }
    return i;
}
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    int n,x,t,m;
    f>>n;
    vector <int> v(n);
    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 (v[caut_bin(v,x)]==x) g<<caut_bin(v,x)+1<<"\n";
                else g<<-1<<"\n";
            }
    }
}