Cod sursa(job #2218579)

Utilizator badassmuffinAndrei Stefanescu badassmuffin Data 5 iulie 2018 01:01:29
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
int min, max, pozmin, pozmax;
int cbin0 (int s, int d, int v[ ], int x)
{
    int m;
    m=(s+d+1)/2;
    if (s==d) return s;
    if (x>=v[m]) return  cbin0 (m, d, v, x);
    else return cbin0 (s, m-1, v, x);
}
int cbin1 (int s, int d, int v[ ], int x)
{
    int m;
    m=(s+d+1)/2;
    if (s==d) return s;
    if (v[m]<=x) return cbin1 (m, d, v, x);
    else return cbin1 (s, m-1, v, x);
}
int cbin2 (int s, int d, int v[ ], int x)
{
    int m;
    m=(s+d)/2;
    if (s==d) return s;
    if (x<=v[m]) return  cbin2 (s, m, v, x);
    else return cbin2 (m+1, d, v, x);
}
int main()
{long  n, i, m;
    f>>n;
    int v[n], x;
    for (i=1; i<=n; i++)
        f>>v[i];
    f>>m;
    int intrebare;
    for (i=1; i<=m; i++)
    {
        f>>intrebare>>x;
        if (intrebare==0) {
           int p=cbin0 (1, n, v, x);
           if (v[p]!=x) g <<-1<<"\n";
           else g <<p<<"\n";
        }
        if (intrebare==1) {
            g<< cbin1 (1, n, v, x)<<"\n";
        }
        if (intrebare==2) {
        g <<cbin2(1, n, v, x)<<"\n";
        }
    }
    return 0;
}