Cod sursa(job #2428331)

Utilizator OctavVitruviusOctavian Gheorghiu OctavVitruvius Data 4 iunie 2019 19:15:44
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 kb
#include <fstream>

using namespace std;

ifstream in ("cautbin.in");
ofstream out("cautbin.out");

int main()
{
    int n,m,v[10000],i,poz=0,x,tip,s,d,mij;
    in>>n;

    for(i=1;i<=n;i++)
        in>>v[i];

    in>>m;

    for(tip=1;tip<=m;tip++)
        in>>tip>>x;

    for(tip=1;tip<=m;tip++)
    {
        if(tip==1)
           {
            for(i=1<<20;i>0;i/=2)
            {
                if(poz+i<=n&&v[poz+i]<=x)
                poz=poz+i;
            }

            if(v[poz]==x)
                out<<poz<<endl;
            else
                out<<-1<<endl;
           }
        if(tip==2)
        {
            s=1;d=n;
            while(s<d)
                {
                    mij=(s+d)/2;
                    if(v[mij]<=x)
                        s=mij+1;
                    else
                    d=mij;
                }
            mij = (d + s) / 2;
            if (v[mij] > x)
                mij--;
            out<<mij<<endl;
        }
        if(tip==2)
    {

        s=1;d=n;
        while(s<d)
        {
            mij=(s+d)/2;
            if(v[mij]<x)
                s=mij+1;
            else
                d=mij;
        }
        mij = (d + s) / 2;
        if (v[mij] < x)
            mij++;
        out<<mij;
   }
    }
    return 0;
}