Cod sursa(job #1264071)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 15 noiembrie 2014 15:02:27
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 kb
#include <fstream>

using namespace std;
int a[100002],i,n,m,c,x,p1,p2,mij;
int main()
{
    ifstream in("cautbin.in");
    ofstream out("cautbin.out");
    in>>n;
    for(i=1;i<=n;i++)
    in>>a[i];
    in>>m;
    for(i=1;i<=m;i++)
    {
        in>>c>>x;
          p1=1;
            p2=n;
        if(c==0)
        {

            while(p1<p2)
            {
                mij=(p1+p2)/2;
                if(x>=a[mij])
                    p1=mij+1;
                else
                    p2=mij-1;
            }
            if(a[p1]>x)p1--;

            if(a[p1]==x&&p1>=1)
                out<<p1<<endl;
            else
                out<<-1<<endl;
        }
        if(c==1)
        {
            while(p1<p2)
            {
                mij=(p1+p2)/2;
                 if(x>=a[mij])
                    p1=mij+1;
                else
                    p2=mij-1;
            }
            if(a[p1]>x)p1--;
            if(a[p1]<=x&&p1>=1)out<<p1<<endl;


    }
       if(c==2)
       {
           while(p1<p2)
           {
               mij=(p1+p2)/2;
               if(x>a[mij])
               {
                   p1=mij+1;
               }
               else p2=mij-1;
           }
           if(a[p1]<x)p1++;
           if(a[p1]>=x )out<<p1<<endl;



       }
     }
     out.close();
     in.close();
    return 0;
}