Cod sursa(job #1730187)

Utilizator Matei_adevaratMatei Simtinica Matei_adevarat Data 16 iulie 2016 15:21:13
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>

using namespace std;
ifstream cin ("cautbin.in");
ofstream cout ("cautbin.out");
int v[100];
int N;

int rasp0(int x){
  int st=1,dr=N+1;
  int ans=-1;
  while(st<=dr){
    int med=(st+dr)/2;
    if(x==v[med]){
      ans=med;
      st=med+1;
    }
    else if(x<v[med]) dr=med-1;
    else st=med+1;
  }
  return ans;
}


int rasp1(int x){
  int st=1,dr=N+1;
  int ans=-1;
  while(st<=dr){
    int med=(st+dr)/2;
    if(x>=v[med]){
      ans=med;
      st=med+1;
    }
    else dr=med-1;
  }
  return ans;
}

int rasp2(int x){
  int st=1,dr=N+1;
  int ans=-1;
  while(st<=dr){
    int med=(st+dr)/2;
    if(x<=v[med]){
      ans=med;
      dr=med-1;
    }
    else st=med+1;
  }
  return ans;
}




int main()
{
    int M,a,b;
    cin>>N;
    for(int i=1;i<=N;i++){
      cin>>v[i];
    }
    cin>>M;
    for(int i=1;i<=M;i++){
      cin>>a>>b;
      if(a==0) cout<<rasp0(b)<<'\n';
      if(a==1) cout<<rasp1(b)<<'\n';
      if(a==2) cout<<rasp2(b)<<'\n';
    }

    return 0;
}