Cod sursa(job #197346)

Utilizator hulparuadrianhulparu adrian hulparuadrian Data 3 iulie 2008 19:47:02
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<fstream>

using namespace std;

      ifstream f("cautbin.in");
      ofstream g("cautbin.out");

int n,m,v[100001],op,x;

    int calc(int op, int x){
        int st=1,dr=n;
        while(1)
        {
                int mid=st+(dr-st)/2;
                if (v[mid]<x) st=mid;
                else if (v[mid]>x) dr=mid;
                if (v[mid]==x) return mid;
                if (dr-st==1) 
                   {if (v[dr]==x) return dr;
                   else if (v[st]==x) return st;
                   else{
                              if (op==1) return st;
                   else return dr;}        }
                }
        }
int main()
{
f>>n;
for(int i=1;i<=n;f>>v[i++]);
f>>m;
for(int j=1;j<=m;j++)
        {
                     f>>op>>x;
                     g<<calc(op,x)<<"\n";
                     }
    
    return 0;
    }