Cod sursa(job #2227000)

Utilizator XXMihaiXX969Gherghinescu Mihai Andrei XXMihaiXX969 Data 30 iulie 2018 21:19:24
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
using namespace std;
int n,m,v[100001],i,a,x;

ifstream in("cautbin.in");
ofstream out("cautbin.out");
void alpha(int n,int &x)
{int st,dr,mij,ans;

st=1;

dr=n;

ans=-1;

while(st<=dr)

{mij=(st+dr)/2;
if(v[mij]==x)
   {
       ans=mij;
    st=mij+1;
   }
else
{

    if(v[mij]>x)

dr=mij-1;

else

    st=mij+1;
}
}

x=ans;

}
int beta(int n, int &x){
int st,dr,mij,ans;

st=1;

dr=n;

ans=1;

while(st<=dr){

    mij=(dr+st)/2;

    if(v[mij]<=x)

    {ans=mij;

    st=mij+1;
      }
      else

    dr=mij-1;

}

    x=ans;

}
int delta(int n,int &x){
int st,dr,mij,ans;

st=1;

dr=n;

ans=1;

while(st<=dr){

    mij=(st+dr)/2;

    if(v[mij]>=x)

    {ans=mij;

    dr=mij-1;

    }
    else
        st=mij+1;


}
x=ans;

}
int main()
{in>>n;

for(i=1;i<=n;i++)

    in>>v[i];

in>>m;

for(i=1;i<=m;i++){

    in>>a;

in>>x;

if(a==0)

alpha(n,x);

if(a==1)

beta(n,x);

if(a==2)

delta(n,x);

out<<x;

out<<endl;

}

    return 0;
}