Pagini recente » Cod sursa (job #2474748) | Cod sursa (job #937520) | Cod sursa (job #1803178) | Cod sursa (job #682724) | Cod sursa (job #3312302)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
using namespace std;
struct intreb{
int intr;
int val;
};
intreb a[100001];
int v[100001];
int main()
{
int n;
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
}
int m;
fin>>m;
for(int i=1;i<=m;i++){
fin>>a[i].intr>>a[i].val;
}
for(int i=1;i<=m;i++){
if(a[i].intr == 0){ // cautare exacta
int idx = lower_bound(v+1,v+n+1,a[i].val) - v;
if(idx <= n && v[idx] == a[i].val){
int pu=upper_bound(v+1,v+n+1,a[i].val)-v-1;
fout << pu << '\n';
}
else{
fout << -1 << '\n';
}
}
if(a[i].intr == 1){ // ultimul <= val
int idx = upper_bound(v+1,v+n+1,a[i].val) - v - 1;
fout << idx << '\n';
}
if(a[i].intr == 2){ // primul >= val
int idx = lower_bound(v+1,v+n+1,a[i].val) - v;
fout << idx << '\n';
}
}
}