Cod sursa(job #2538112)

Utilizator Artur26Seres Artur Artur26 Data 4 februarie 2020 13:55:42
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.68 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int mij1,mij2;
int main()
{
    int n,i,v[999],m,x,ok,p,q,c,y;
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
    f>>m;
    while(m>0)
    {
        f>>y;
        f>>x;
        p=1;
        q=n;
        ok=0;
        while(p<=q&&ok==0&&m>0&&y==0)
        {
            mij1=(p+q)/2;
            if(v[mij1]==x)
            {
                ok=1;
            }
            else
            if(x<v[mij1])
            {
                q=mij1-1;
            }
            else
                p=mij1+1;
            while(v[mij1]==v[mij1+1])
            {
                mij1=mij1+1;
            }
        }
        if(ok==0&&m>0&&y==0)
            g<<"-1"<<' ';
        if(ok==1&&m>0&&y==0)
            g<<mij1<<' ';
        p=1;
        q=n;
        ok=0;
        c=0;
        mij2=mij1;
        while(ok==0&&m>0&&y==1)
        {
            if(v[mij1]==v[mij1+1])
            {
                mij1=mij1+1;
                c=c+1;
            }
            else
                ok=1;
        }
        if(c==0&&m>0&&y==1)
            g<<mij2<<' ';
        if(c!=0&&m>0&&y==1)
            g<<mij1<<' ';
        p=1;
        q=n;
        ok=0;
        c=0;
        mij1=mij2;
        while(ok==0&&m>0&&y==2)
        {
            if(v[mij1]==v[mij1-1])
            {
                mij1=mij1-1;
                c=c+1;
            }
            else
                ok=1;
        }
        if(c==0&&m>0&&y==2)
            g<<mij2<<' ';
        if(c!=0&&m>0&&y==2)
            g<<mij1<<' ';
        m=m-1;
    }
    return 0;
}