Cod sursa(job #1519180)

Utilizator vasica38Vasile Catana vasica38 Data 6 noiembrie 2015 22:48:46
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<fstream>

using namespace std;


int a[100133];
int i,j,k,m,n,u,t;

ifstream cin("cautbin.in");
ofstream cout("cautbin.out");

int cauta (int x)
{
    int ic=1;
    int sf=n;
    while (ic<=sf)
    {
        int mijl=(ic+sf)/2;
        if (a[mijl]==x) return mijl;
        if (x>a[mijl]) ic=mijl+1;
        if (x<a[mijl]) sf=mijl-1;
    }
    return 0;
}


int main()
{
    ios_base::sync_with_stdio(0);
    cin>>n;
    for (i=1; i<=n; ++i) cin>>a[i];
    cin>>m;
    while (m--)
    {
        int op,k;
        cin>>op>>k;
        u=cauta(k);
        if  (!u) cout<<"-1\n";
        if  (!op)
        {
            while (a[u]==a[u+1] && u<=n) ++u;
            cout<<u<<"\n";
        }
        else
        if (op==1)
        {
            while (a[u]==a[u+1] && u<=n) ++u;
            cout<<u<<"\n";
        }
        else
        {
            while (a[u]==a[u-1] && u>=1) --u;
            cout<<u<<"\n";
        }
    }
    return 0;

}