Cod sursa(job #1263371)

Utilizator DavidDragulinDragulin David DavidDragulin Data 14 noiembrie 2014 18:06:42
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
#include <fstream>

using namespace std;
int a[100002],i,n,m,c,x,p1,p2,mij;
int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    fin>>n;
    for(i=1;i<=n;i++)fin>>a[i];
    fin>>m;
    for(i=1;i<=m;i++)
    {
        fin>>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)
                fout<<p1<<'\n';
            else
                fout<<-1<<'\n';
        }
        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)fout<<p1<<'\n';


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



       }
     }
   fin.close();
    fout.close();
    return 0;
}