Cod sursa(job #1313474)

Utilizator asavoaeigeoAsavoaei Georgiana asavoaeigeo Data 10 ianuarie 2015 18:21:24
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.32 kb
#include <fstream>

using namespace std;

int v[100101];
int main()
{
    int n,m,tip,x,d,mij,s;
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
     scanf("%d", &n);

    for(int i=1;i<=n;i++) scanf("%d", &v[i]);

    scanf("%d", &m);

     for(int i=1;i<=m;i++)
    {
       scanf("%d%d", &tip, &x);
       if(tip==0)
            { int s=1; d=n;
               while(s<=d )
                  {mij=(s+d)/2;
                   if(v[mij]<=x) s=mij+1;
                   else d=mij-1;
                  }
            mij=(s+d)/2;
            if(v[mij]>x) mij--;
            if(v[mij]==x) printf("%d\n",mij);
            else  printf("%d\n",-1);
            }
     if(tip==1)
            { int s=1; d=n;
               while (s<d)
               {mij=(s+d)/2;
               if (v[mij]<=x) s=mij+1;
              else d=m;
               }
              mij=(s+d)/ 2;
              if(v[mij]>x) -- mij;
              printf("%d\n",mij);
            }
     if(tip==2)
            {  s=1,d=n;
               while (s<d)
               {mij =(s + d)/2;
               if (v[mij]<x) s=mij+1;
              else d=mij;
                }

              mij=(s+d)/2;
              if (v[mij]<x) mij++;
              printf("%d\n",mij);
              }
    }

    return 0;
}