Cod sursa(job #2067815)

Utilizator Stefan_DomuncoStefan Domunco Stefan_Domunco Data 16 noiembrie 2017 20:59:55
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>

using namespace std;
int poz[100003], x[100003], dr[100003], st[100003];
int dreapta(int x1, int i)
{
   while(i>0)
   {
       if(x[i]<=x1)
       {
           return i;
       }
        i--;

   }
    return 0;
}

int stanga(int x1, int n)
{
    int i=1;
        while(i<=n)
        {

            if(x[i]>=x1)
                return i;
            i++;
        }
        return 0;
}

int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    int i, n, m, j, y;
    f>>n;
    for(i=1; i<=n; i++)
    {
        f>>x[i];
        poz[x[i]]=i;
        //dr[i]=dreapta(x[i], n);
    }
    for(i=1; i<=n; i++)
    {
        dr[i]=dreapta(x[i], n);
        st[i]=stanga(x[i], n);
    }
//    for(i=1; i<=n; i++)
//        g<<st[i]<<' ';
    f>>m;
    for(i=1; i<=m; i++)
    {
        f>>j>>y;
        if(j==0)
        {
            if(poz[y]>0)
                g<<poz[y]<<'\n';
            else g<<"-1"<<'\n';
        }
        else if(j==1)
        {
            if(dr[y]>0)
                g<<dr[y]<<'\n';
            else g<<"-1"<<'\n';
        }
        else
        {
            if(st[y]>0)
                g<<st[y]<<'\n';
            else g<<"-1"<<'\n';
        }
    }


    return 0;
}