Cod sursa(job #2544890)

Utilizator DayanamdrMardari Dayana Raluca Dayanamdr Data 12 februarie 2020 17:21:11
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int cautareBiDreapta(int v[101], int n, int x, int operatie) {
	int st = 1, dr = n, poz, mij;
	while(st < dr) {
		mij = (st + dr + 1) / 2;
		if(v[mij] > x)
			dr = mij - 1;
		else st = mij;
	}
	bool gasit = false;
	if(v[st] == x)
        gasit = true;
    if(gasit)
        return st;
    else if(!gasit && operatie == 0)
        return -1;
    else if(!gasit && operatie == 1)
        return st;
}
int cautareBiStanga(int v[101], int n, int x) {
    int st = 1, dr = n, mij;
    while(st < dr) {
        mij = (dr + st) / 2;
        if(v[mij] < x)
            st = mij + 1;
        else dr = mij;
    }
    return st;
}
int main() {
	int N, v[100001];
	f >> N;
	for(int i = 1; i <= N; i++)
        f >> v[i];
    int M;
    f >> M;
    while(M--) {
        int operatie, x;
        f >> operatie >> x;
        if(operatie == 0 || operatie == 1)
            g << cautareBiDreapta(v, N, x, operatie) << "\n";
        else if(operatie == 2)
            g << cautareBiStanga(v, N, x) << "\n";
    }
	return 0;
}