Cod sursa(job #2427840)

Utilizator laurastanciuStanciu Laura laurastanciu Data 2 iunie 2019 14:03:46
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include<math.h>
#include<fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[10000],poz;
int caut(int n,int x)
{
    poz=0;
    int msk=pow(2,20);
    for(msk=pow(2,20);msk>0;msk=msk/2)
    {
        if(poz+msk<=n && v[poz+msk]<=x)poz=poz+msk;
    }
    if(v[poz]==x)return poz;
    else return -1;
}
int main()
{
    int n,m,x,i,c,p;
    in>>n;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
    }
    in>>m;
    for(i=1;i<=m;i++)
    {
        in>>c>>x;
        if(c==0)
        {
            p=caut(n,x);
            if(v[p]==x)out<<p<<'\n';
            else out<<"-1"<<'\n';
        }
        if(c==1)
        {
            p=caut(n,x);
            out<<p<<'\n';
        }
        if(c==2)
        {
            p=caut(n,x-1);
            if(p==-1)p=poz;
            out<<p+1<<'\n';
        }
    }
    return 0;
}