Cod sursa(job #1309347)

Utilizator GhermanGherman Stefan Gherman Data 5 ianuarie 2015 18:06:58
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,v[100000];

int caut0(int x)
{
    int pas,i=0;
    pas=1<<16;
    while(pas!=0)
    {
        if((i+pas)<=n && v[i+pas]<=x)
            i+=pas;
       pas/=2;
    }
    if(v[i]==x)
        return i;
    return -1;
}
int caut1(int x)
{
    int pas,i=0;
    pas=1<<16;
    while(pas!=0)
    {
        if((i+pas)<=n && v[i+pas]<=x)
            i+=pas;
        pas/=2;
    }
    return i;
}
int caut2(int x)
{
    int pas,i=0;
    pas=1<<16;
    while(pas!=0)
    {
        if((i+pas)<=n && v[i+pas]<x)
            i+=pas;
        pas/=2;
    }
    return 1+i;
}
void citire()
{
    int m,i,tip,x;
    ifstream in("cautbin.in");
    ofstream out("cautbin.out");
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    in>>m;
    for(i=1;i<=m;i++)
    {
        in>>tip>>x;
        if(tip==0)
            out << caut0(x) << "\n";
        if(tip==1)
            out<< caut1(x) << "\n";
        if(tip==2)
            out<< caut2(x) << "\n";
    }
    in.close();
}
int main()
{
    citire();
    return 0;
}