Cod sursa(job #655478)

Utilizator Laura_MMiclescu Laura Laura_M Data 2 ianuarie 2012 18:17:37
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[100001], N, M, mij, x, nr;

int cautare0(int k, int inf, int sup)
{
     while (inf<=sup)
        {mij=inf+(sup-inf)/2;
         if (v[mij]<=k) 
             inf=mij+1;
         else 
             sup=mij-1;}
     mij=inf+(sup-inf)/2;
     if (v[mij]>k) mij--;
     if (v[mij]==k) return mij;
     else return -1;        
}

int cautare1 (int k, int inf, int sup)
{
    while (inf<sup)
       {mij=inf+(sup-inf)/2;
        if (v[mij]<=k)
            inf=mij+1;
        else
            sup=mij;}
    mij=inf+(sup-inf)/2;        
    if (v[mij]>k)
        mij--;
    return mij;                            
}

int cautare2 (int k, int inf, int sup)
{
    while (inf<sup)
       {mij=inf+(sup-inf)/2;
        if (v[mij]<k)
            inf=mij+1;
        else
            sup=mij;}
    mij=inf+(sup-inf)/2; 
    if (v[mij]<x)
        mij++;
    return mij;                          
}   

int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>N;
    for (int i=1; i<=N; i++)
         f>>v[i];
    f>>M; 
    for (int j=0; j<M; j++)
       {f>>nr;
        f>>x;
        if (nr==0)        
              g<<cautare0(x,1,N);
        else      
            if (nr==1)      
                g<<cautare1(x,1,N);
            else     
                g<<cautare2(x,1,N);}
     return 0;         
}