Cod sursa(job #1914625)

Utilizator Alexandru07Tomescu Ilie Alexandru Alexandru07 Data 8 martie 2017 17:44:41
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.7 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int i,j,v[100001],inst,h,n,m,x;

ifstream f("bfs.in");
ofstream g("bfs.out");

void set1(int x)
{
    h=0;
    int b,c,a,f;
    b=1;
    c=n;
    while(b<=c)
    {
        a=(b+c)/2;
        if(x==v[a])
        {
          b=a+1;
          h=a;


        }
        else
        if(x<v[a])
        {
            c=a-1;
        }
        else
            b=a+1;
    }
    if(h==0)
        g<<"-1"<<"\n";
    else
   g<<h<<"\n";

}
void set2(int x)
{
    int b,c,a,f,i;
    b=1;
    c=n;
    while(b<=c)
    {
        a=(b+c)/2;
        if(x==v[a])
        {
          b=a+1;
          h=a;


        }
        else
        if(x<v[a])
        {
            c=a-1;
        }
        else
            b=a+1;
    }
    if(h==0)
    {i=n;
        while(v[i]>x)
        i--;
     g<<i<<"\n";
    }
    else
   g<<h<<"\n";

}
void set3 (int x)
{
    h=0;
    int b,c,a,f;
    b=1;
    c=n;
    while(b<=c)
    {
        a=(b+c)/2;
        if(x==v[a])
        {
          c=a-1;
          h=a;


        }
        else
        if(x<v[a])
        {
            c=a-1;
        }
        else
            b=a+1;
    }
    if(h==0)
    {
        i=1;
        while(v[i]<=x)
            i++;
        g<<i<<"\n";
    }
    else
   g<<h<<"\n";
}
int main()
{
    f >> n;
    for(i=1;i<=n;i++)
        f>>v[i];
    f>>m;
    sort(v+1,v+1+n);
    for(i=1;i<=m;i++)
    {
        f>>inst>>x;
       if(inst==0)
        set1(x);
       else
        if(inst==1)
        set2(x);
       else
        set3(x);

    }

    return 0;
}