Cod sursa(job #1600201)

Utilizator DaniellDa Vinci Daniell Data 14 februarie 2016 19:29:06
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,i,k,v[100001],a,x,j=-1,j2=-1,m,h;
int bin(int s,int d)
{
    if(s>d)return -1;
    else
    {m=(s+d)/2;
    if(x==v[m])return m;
    else if(x<v[m])return bin(s,m-1);
    else if(x>v[m])return bin(m+1,d);

    }
}

int main()
{
fin>>n;
for(i=1;i<=n;i++)fin>>v[i];
fin>>k;
for(h=1;h<=k;h++)
{
    fin>>a>>x;

        j=bin(0,n-1);
        while(v[m]==x && m<=n)
        {if(v[m+1]!=x)j=bin(m,n-1);m++;}
        if(a==0) fout<<j<<"\n";



       if(a==1)
       {

        for(i=j;i<=n;i++)
       {
           if(v[i]==x){fout<<i<<"\n";break;}
           if(v[i]>x){fout<<i<<"\n";break;}
       }}
     if(a==2)
     {
         for(i=m;i>=1;i--)
         {
             if(v[i]==x && v[i-1]<x){fout<<i<<"\n";break;}
             if(v[i]<x && v[i-1]<v[i]){fout<<i<<"\n";break;}
         }
     }

}

    return 0;
}