Cod sursa(job #1646610)

Utilizator TimoteiCopaciu Timotei Timotei Data 10 martie 2016 16:53:41
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, v[100005], Q, T, x;
void caut1(int x){
  int st = 0;
  int dr = n + 1;
  int mij;
  while(dr - st != 1){
    mij = st + (dr - st) / 2;
    if(v[mij] <= x) st = mij;
    else dr = mij;
  }
  if(v[st] == x) g << st << "\n";
  else g << "-1\n";
}
void caut2(int x){
  int st = 0;
  int dr = n + 1;
  int mij;
  while(dr - st != 1){
    mij = st + (dr - st) / 2;
    if(v[mij] <= x) st = mij;
    else dr = mij;
  }
  g << st << "\n";
}
void caut3(int x){
  int st = 0;
  int dr = n + 1;
  int mij;
  while(dr - st != 1){
    mij = st + (dr - st) / 2;
    if(v[mij] >= x) dr = mij;
    else st = mij;
  }
  g << dr << "\n";
}
int main()
{
    f >> n;
    for(int i = 1; i <= n; i++) f >> v[i];
    f >> T;
    for(int i = 1; i <= T; i++){
        f >> Q >> x;
        if(Q == 0) caut1(x);
        else if(Q == 1) caut2(x);
        else caut3(x);
    }
    return 0;
}