Cod sursa(job #2507767)

Utilizator MihclerioVladimir Chim Mihclerio Data 10 decembrie 2019 20:04:28
Problema Cautare binara Scor 40
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 1.03 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;
  vector<int>v;
  forn(i,n)
  {
    int x;
    cin>>x;
    v.pb(x);
  }
  sort(all(v));
  int k;
  cin>>k;
  while(k--)
  {
    int a,b;
    cin>>a>>b;
    if(a==0)
    {
      int x=upper_bound(all(v),b)-v.begin();
      if(x>0 && x<=v.size() && v[x-1]==b) cout<<x<<"\n"; else cout<<"-1\n";
    } else
    if(a==1)
    {
      int x=lower_bound(all(v),b+1)-v.begin();
      cout<<x<<"\n";
    } else
    {
      int x=upper_bound(all(v),b-1)-v.begin()+1;
      cout<<x<<"\n";
    }
  }
}