Cod sursa(job #999208)

Utilizator pincucatalinPincu Catalin pincucatalin Data 19 septembrie 2013 17:51:29
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[100000];
int caut0(int x,int n)
{
    int i=-1,pas=1<<16;
    while (pas!=0)
    {
        if (a[i+pas]==x && (i+pas)<=n)
            i+=pas+1;
        pas/=2;
    }
    return i;

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

        }
        if (intr==1)
        {
            g<<caut1(x,n)<<"\n";
        }
        if (intr==2)
        {
            g<<caut2(x,n)<<"\n";
        }
    }
    return 0;
}