Cod sursa(job #220850)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 13 noiembrie 2008 11:53:27
Problema Cautare binara Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 2.3 kb
#include<fstream>   
  
using namespace std;   
  
ifstream fin ("cautbin.in");   
ofstream fout ("cautbin.out");   
  
long long int a[100001];   
  
int main ()   
{ 
    int n,i,k,c,x,min,z,max,m;
    fin>>n;
    z=1;
    for(i=1;i<=n;i++)
    fin>>a[i];
    fin>>m;
    ////
    for(k=1;k<=m;k++)
    {
                     fin>>c>>x;
                     min=1; max=n;z=0;
    if(c==0)
    {/////11111111111
            while(x!=a[z])
            {
                          z=(min+max)/2;
                          if(a[z]<x)
                          min=z+1;
                          else
                          max=z-1;
                          if(a[z]==x)
                          {
                                     fout<<z<<"\n";
                          break;
                          }
            if(min>max)
            break;
                          }if(a[z]!=x)
                          fout<<"-1\n";
                          }//111111111
    else
    if(c==1)
    {////22222222
            while(x!=a[z])
            {if(min>max)
            break;
                          z=(min+max)/2;
                          if(a[z]<x)
                          min=z+1;
                          else
                          max=z-1;
                          if(a[z]==x)
                          {
                                     fout<<z<<"\n";
                          break;
                          }while(a[z]>x)
                          z--;
                          }if(a[z]!=x)
                          fout<<z<<"\n";
                          }///////2222222
    else
    if(c==2)
    {///33333333
            while(x!=a[z])
            {if(min>max)
            break;
                          z=(min+max)/2;
                          if(a[z]<x)
                          min=z+1;
                          else
                          max=z-1;
                          if(a[z]==x)
                          {
                                     fout<<z<<"\n";
                          break;
                          }
                          }while(a[z]<x)
                          z++;
                          if(a[z]!=x)
                          fout<<z<<"\n";
                          }
}
return 0;
}