Cod sursa(job #2272441)

Utilizator Xutzu358Ignat Alex Xutzu358 Data 30 octombrie 2018 10:24:12
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.32 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int main()
{
    int i,n,t,j,st,dr,mij,x,op;
    fin >> n;
    int v[n+1];
    for (i=1;i<=n;i++)
        fin >> v[i];

    fin >> t;
    int out[t+1];
    for (j=1;j<=t;j++) {
    fin >> op>>x;
     st=1;
     dr=n;
     mij=(st+dr)/2;
    if (op==0) {
    while (st!=dr && st!=mij && dr!=mij) {
                if (v[mij]<=x)
                    st=mij;
                else
                    dr=mij;
                mij=(st+dr)/2;
    }
    if (v[st]==x)
        out[j]=mij;
    else
        out[j]=-1;
    }
    if (op==1) {
         while (st!=dr && st!=mij && dr!=mij ) {
                if (v[mij]<=x)
                    st=mij;
                else
                    dr=mij;
                mij=(st+dr)/2;
    }
    out[j]= mij;
    }
    if (op==2) {
        while (st!=dr && st!=mij && dr!=mij) {
            if (v[mij]>=x)
                dr=mij;
            else
                st=mij;
            mij=(st+dr)/2;
        }
    if (v[dr]==x  && v[st]!=x)
    out[j]=dr;
    else
        out[j]=mij;

    }
    }
    for (j=1;j<=t;j++)
        fout << out[j]<<endl;





    fin.close();
    fout.close();
    return 0;
}