Cod sursa(job #662606)

Utilizator ana_sana-maria stancu ana_s Data 16 ianuarie 2012 20:42:56
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<fstream>
#include<conio.h>
using namespace std;
int v[36000];
 
int varianta0(int st,int dr,int x)
{  int mij;
   while(st<=dr)
     {mij=(st+dr)/2;
      if(v[mij]<=x) 
         st=mij+1;
           else 
         dr=mij-1;
      }
   mij=(st+dr)/2;
   if(v[mij]>x) 
     mij--;
   if(v[mij]==x) 
    return mij;
      else 
    return -1;
}
   
int varianta1(int st, int dr, int x)
{ int mij;
   while(st<dr)
    {mij=(st+dr)/2;
     if(v[mij]<=x)  
       st=mij+1;       
         else 
       dr=mij;
     }
  mij=(st+dr)/2;
  if(v[mij]>x) 
    mij--;
 return mij;
}
    
int varianta2(int st, int dr, int x)
{ int mij;
  while(st<dr)
  {mij=(st+dr)/2;
   if(v[mij]<x) 
     st=mij+1;
       else 
     dr=mij; 
   }
  mij=(st+dr)/2;
  if(v[mij]<x) 
    mij++;
 return mij; 
 }
 
int main()
{ int i,N, M, optiune, x;
fstream f,g;
f.open("cautbin.in",ios::in);
g.open("cautbin.out",ios::out);
f>>N;
for(i=1;i<=N;i++)
  f>>v[i];
f>>M;
for(i=1;i<=M;i++)
{
 f>>optiune>>x;
 if(optiune==0) g<<varianta0(1,N,x)<<"\n";
 if(optiune==1) g<<varianta1(1,N,x)<<"\n";
 if(optiune==2) g<<varianta2(1,N,x)<<"\n";
}
f.close();
g.close();
return 0;
}