Cod sursa(job #1022565)

Utilizator Aleks10FMI - Petrache Alex Aleks10 Data 5 noiembrie 2013 18:41:45
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>

using namespace std;

int n,a[100001];
int caut(int x){
    int pos,i;
    pos=1<<19;
    for(i=0;pos!=0;pos=pos/2)
        if(i+pos<n && a[i+pos]<=x){
            i=i+pos;
            //cout<<a[i]<<" ";
        }
    return i;
}

int main()
{
    int i,x,z,m;
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>n;
    for(i=0;i<n;i++)
        f>>a[i];
    f>>m;
    for(i=0;i<m;i++)
    {
        f>>x>>z;
        if(x==0){
            int rez=caut(z);
            if(a[rez]!=z)
                g<<-1<<'\n';
            else
            g<<rez+1<<'\n';
        }
        if(x==1)
        {
            g<<caut(z)+1<<'\n';
        }
        if(x==2)
        {
            int nr=caut(z);
            int nrv=a[nr];
            int poz;
            bool ok=false;
            if(nrv==z)
                poz=nr;
            else{
                /*while(ok){
                    nr++;
                    if(a[nr]>)
                }*/
                poz=nr+1;
            }
            g<<poz+1<<'\n';
        }
    }
    return 0;
}