Cod sursa(job #1430320)

Utilizator yukinaDascalescu Dana yukina Data 8 mai 2015 10:17:08
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in"); ofstream g("cautbin.out");
int a[100001];
int main()
{   int n,q,i;
    f>>n;
    for(i=1; i<=n; i++) f>>a[i];
    f>>q;
    while(q--)
    {   int t,x,st,dr,m;
        f>>t>>x;
        switch(t)
        {   case 0 :    st=1; dr=n;
                        while(st<=dr)
                        {   m=(st+dr)/2;
                            if(a[m]<=x) st=m+1; else dr=m-1;
                        }
                        if(x==a[dr]) g<<dr<<'\n';  else g<<"-1\n";
                        break;
            case 1 :    st=1; dr=n;
                        while(st<=dr)
                        {   m=(st+dr)/2;
                            if(a[m]<=x) st=m+1; else dr=m-1;
                        }
                        g<<dr<<'\n';
                        break;
            case 2 :    st=1; dr=n;
                        while(st<=dr)
                        {   m=(st+dr)/2;
                            if(a[m]<x) st=m+1; else dr=m-1;
                        }
                        g<<st<<'\n';
        }
    }
    g.close(); return 0;
}