Cod sursa(job #2245129)

Utilizator rusu.ralucaRusu Raluca rusu.raluca Data 24 septembrie 2018 19:03:39
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("cautbin.in");
ofstream four("cautbin.out");

int a[100005];

int main(){
	int n, 
	fin >> n; 
	for(i=1; i<=n; ++i){
		fin >> a[i];
		}
	int m;
	fin >> n;
	
	for(i=1; i<=m; ++i){
		int op, x, res, mid, l=1, r=n;
		fin >> op >> x;
		res=-1;
		if(op == 0){
			while(l<=r){
				mid = (l+r) / 2;
				if(a[mid]==x){
					res = a[mid];
					l=mid+1;
					}
				else(a[mid]<x){
					l=mid+1;
					}
				else(a[mid]>x){
					r=mid-1;
					}
				}
			}
		if(op == 1){
			while(l<=r){
				mid = (l+r) / 2;
				if(a[mid]<=x){
					res=a[mid];
					l=mid+1;
					}
				else(a[mid]>x){
					r=mid-1;
					}
				}
			}
		if(op == 2){
			while(l<=r){
				mid = (l+r) / 2;
				if(a[mid]>=x){
					res=a[mid];
					r=mid-1;;
					}
				else(a[mid]<x){
					l=mid+1;
					}
				}
			}
		}
	
	fout<<res;
	
	
	}