Cod sursa(job #2625896)

Utilizator Gabriela_4Gabriela Ion Gabriela_4 Data 6 iunie 2020 10:46:56
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.49 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[100000];

int cautare_binara(int s, int d, int info) {
    int mid;
    while (s <= d) {
        mid = (s + d) / 2;
        if (v[mid] <= info)
            s = mid + 1;
        else
            d = mid - 1;
    }
    mid = (s + d) / 2;
    if (v[mid] > info)
        mid--;
    if (v[mid] == info)
        return mid;
    return -1;

}

int cautare_binara1(int s, int d, int info) {
    int mid;
    while (s < d) {
        mid = (s + d) / 2;
        if (v[mid] <= info)
            s = mid + 1;
        else
            d = mid;
    }
    mid = (s + d) / 2;
    if (v[mid] > info)
        mid--;
    return mid;
}

int cautare_binara2(int s, int d, int info) {
    int mid;
    while (s < d) {
        mid = (s + d) / 2;
        if (v[mid] < info)
            s = mid + 1;
        else
            d = mid;
    }
    mid = (s + d) / 2;
    if (v[mid] < info)
        mid++;
    return mid;
}

int main() {
    int n, mid, tip, info;
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f >> n;
    for (int i = 1; i <= n; i++)
        f >> v[i];
    f >> mid;
    while (mid) {
        f >> tip >> info;
        switch (tip) {
            case 0: {
                g << cautare_binara(1, n, info) << "\n";
            }
            case 1: {
                g << cautare_binara1(1, n, info) << "\n";
            }
            case 2:
                g << cautare_binara2(1, n, info) << "\n";
        }
        mid--;
    }
    return 0;
}