Cod sursa(job #1330722)

Utilizator beatrice01Ferco Beatrice beatrice01 Data 30 ianuarie 2015 21:52:57
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");

int n,m,sir[100000],i,j,qst,x;

int question0 (int x)
{
    int left=1,right=n,mid;
    while (left<right)
    {
        mid=(left+right)/2;
        if(sir[m]<=x) left=mid+1;
        else right=mid;
    }
    mid=(left+right)/2;
    if(sir[mid]>x)
       -- mid;
    if(sir[mid]==x)return mid;
    return -1;
}

int question1 (int x)
 {
    int left=1,right=n,mid;
    while (left<right)
    {
        mid=(left+right)/2;
        if(sir[m]<=x) left=mid+1;
        else right=mid;
    }
    mid=(left+right)/2;
    if(sir[mid]>x)
       -- mid;
    return mid;
}

int question2 (int x)
{
    int left=1,right=n,mid;
    while (left<right)
    {
        mid=(left+right)/2;
        if(sir[m]<x) left=mid+1;
        else right=mid;
    }
    mid=(left+right)/2;
    if(sir[mid]<x)
       ++ mid;
    return mid;
}


int main()
{
    f>>n;
    for(i=1;i<=n;i++)f>>sir[i];
    f>>m;
    for(j=1;j<=m;j++)
    {
        f>>qst>>x;
        if(qst==0)
          g<<question0(x)<<'\n';
        if(qst==1)
          g<<question1(x)<<'\n';
       if(qst==2)
          g<<question2(x);
    }
    return 0;
}