Cod sursa(job #1936717)

Utilizator problem_destroyer69Daniel Hangan problem_destroyer69 Data 23 martie 2017 12:35:54
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>
using namespace std;

int n,a[100005],b[100005],c[100005],m;

int Cautare(int prim,int ultim,int y)
{
    if (prim>ultim) return -1;
    int mijloc=(prim+ultim)/2;
    if (y==a[mijloc]) return mijloc-1;
    if (y<a[mijloc]) return Cautare(prim,mijloc-1,y);
    return Cautare(mijloc+1,ultim,y);
}
int Cautare1(int prim,int ultim,int y)
{
    if (prim>ultim) return ultim;
    int mijloc=(prim+ultim)/2;
    if (y==a[mijloc]) return mijloc-1;
    if (y<a[mijloc]) return Cautare(prim,mijloc-1,y);
    return Cautare(mijloc+1,ultim,y);
}
int Cautare2(int prim,int ultim,int y)
{
    if (prim>ultim) return prim;
    int mijloc=(prim+ultim)/2;
    if (y==a[mijloc]) return mijloc-1;
    if (y<a[mijloc]) return Cautare(prim,mijloc-1,y);
    return Cautare(mijloc+1,ultim,y);
}
int main() {
cin>>n;
for (int i=1;i<=n;i++)
        cin>>a[i];
cin>>m;
for (int i=1;i<=m;i++)
    cin>>b[i]>>c[i];
int q=Cautare(1,n,c[1]);
while (a[q+1]==a[q])
    q++;
int e=Cautare1(1,n,c[2]);
if (Cautare(1,n,c[2])!=-1) e=q;
cout<<q<<' '<<e<<' '<<Cautare2(1,n,c[3]);
    return 0;
}