Cod sursa(job #2507763)

Utilizator MihclerioVladimir Chim Mihclerio Data 10 decembrie 2019 20:01:36
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include<bits/stdc++.h>

#define all(s) s.begin(),s.end()
#define rc(x) return cout<<x<<endl,0
#define forn(i,n) for(int i=0;i<int(n);i++)

#define pb push_back
#define mp make_pair
#define fr first
#define sc second

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const int nmax=2e5+19;
const int mod=6669666;

using namespace std;

int main()
{
  ios_base::sync_with_stdio(0); cin.tie();
  freopen("cautbin.in","r",stdin);
  freopen("cautbin.out","w",stdout);
  int n;
  cin>>n;
  int v[n+3];
  for(int i=1;i<=n;i++) cin>>v[i];
  int k;
  cin>>k;
  while(k--)
  {
    int a,b;
    cin>>a>>b;
    if(a==0)
    {
      int x=upper_bound(v+1,v+n+1,b)-v-1;
      if(x>0 && x<=n && v[x]==b) cout<<x<<"\n"; else cout<<"-1\n";
    } else
    if(a==1)
    {
      int x=lower_bound(v+1,v+n+1,b+1)-v-1;
      cout<<x<<"\n";
    } else
    {
      int x=upper_bound(v+1,v+n+1,b-1)-v;
      cout<<x<<"\n";
    }
  }
}