Cod sursa(job #792820)

Utilizator bia.liliPoenar Liana bia.lili Data 30 septembrie 2012 17:02:42
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.5 kb
#include<fstream>
using namespace std;
int main()
{
    int n,a[100],x,i,li,ls,mij,poz,intreb,nr;
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    fin>>n;
    
    for(i=1;i<=n;i++)

    fin>>a[i];
    
    fin>>nr;
    for(i=1;i<=nr;i++)
    {
                     fin>>intreb>>x;
    
  li=1;
  ls=n;
  mij=(1+n)/2;poz=-1;
  
  
  while(li<=ls&&poz==-1)
  {
                          mij=(li+ls)/2;
                          if(a[mij]>x) 
                                       ls=mij;
                                       else
                                       if(a[mij]<x) li=mij;
                                       else
                                       poz=mij;}
  if (intreb==0) 
  if (poz==-1) fout<<-1<<"\n";
  else
  {                                    
  while(a[poz+1]==x && poz<n)
  poz++;
  fout<<poz<<"\n";
}
  

  if (intreb==1) 
  {
                 if (poz==-1)
while(a[mij+1]>=x&&mij<n) mij++;
else
while(a[mij+1]==x&&mij<n) mij++;

                               fout<<mij<<"\n";
                               }
                               
                               
  if (intreb==2)
  {
                if (poz==-1)
                while(a[mij-1]>=x&&mij>1) mij--;
                else
                while(a[mij-1]==x&&mij>1) mij--;
                
                               fout<<mij<<"\n";
                               }

                               }
                     return 0;}