Pagini recente » Cod sursa (job #1931226) | Cod sursa (job #599657) | Cod sursa (job #2559426) | Cod sursa (job #1969562) | Cod sursa (job #2982554)
#include <bits/stdc++.h>
using namespace std;
const int nmx = 1e5 + 4;
int a[nmx];
#if 1
#define cin fin
#define cout fout
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
#endif // 1
int main(){
int n,m;
cin >> n;
for(int i=0;i<n;i++){
cin >> a[i];
}
cin >> m;
while(m--){
int op,x;
cin >> op >> x;
if(op==0){
//cea mai mare pozitie pe care se afla un element cu valoarea x sau -1 daca aceasta valoare nu se gaseste in sir
int p = upper_bound(a,a+n,x)-a-1;
cout << (a[p]==x ? p+1 : -1);
}
else if(op==1){
// cea mai mare pozitie pe care se afla un element cu valoarea mai mica sau egala cu x in sir.
int p = upper_bound(a,a+n,x)-a-1;
cout << p + 1;
}
else if(op==2){
// cea mai mica pozitie pe care se afla un element cu valoarea mai mare sau egala cu x in sir
int p = lower_bound(a,a+n,x)-a;
cout << p + 1;
}
cout << "\n";
}
}