Cod sursa(job #1026461)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 11 noiembrie 2013 17:30:33
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.41 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int poz;

int caut_bin (int v[],int left, int  right, int x,int c)
{
    int mid=(left+right)/2;
    if (v[mid]==x)
        return mid;
    else

            if (left<=right)
           {

               if(v[mid]<x)
              {
                return caut_bin(v,mid+1,right,x,c);
                  }
            else
            {
                return caut_bin(v,left,mid-1,x,c);
            }
           }

           else
      {
        if(c==0)
            return -1;
        if(c==1)
            return left;
        if(c==2)
            return right;
    }
}
int main()
{
     int n,i,x,c,m,poz;
     int v[100001];
     f>>n;
     for (i=1;i<=n;i++)
        f>>v[i];
     f>>m;
     for (i=1;i<=m;i++)
     {
         f>>c>>x;
         poz=caut_bin(v,1,n,x,c);
         if(c==0)
         {   if(poz!=1)
             while(v[poz+1]==x && poz+1<=n)
                poz++;
             g<<poz<<endl;
         }
         if(c==1)
         {
             while(v[poz+1]==x && poz+1<=n)
                poz++;
             g<<poz<<endl;
         }
         if(c==2)
         {
             while(v[poz-1]==x && poz-1>0)
                poz--;
             g<<poz<<endl;
         }
     }


     f.close();
     g.close();
     return 0;
}