Pagini recente » Cod sursa (job #165831) | Cod sursa (job #1580118) | Cod sursa (job #1157626) | Cod sursa (job #2883528) | Cod sursa (job #2170994)
#include <iostream>
using namespace std;
int v[N], n;
int caut0(int x)
{
int r = 0, pas = 1 << L;
while(pas){
if(r + pas <= n && v[r + pas] <= x){
r += pas;
}
pas /= 2;
}
if(r == 0 || v[r] < x){ ///folosim doar daca nu il cautam pe 1
r = -1;
}
return r;
}
int caut1(int x)
{
int r = 0, pas = 1 << L;
while(pas != 0){
if(r + pas <= n && v[ r + pas ] <= x){
r += pas;
}
pas /= 2;
}
return r;
}
int caut2(int x)
{
int r = 0,
while(pas != 0){
if(r + pas <= n && !(v[r + pas] >= x)){
r += pas;
}
pas /= 2;
}
r++;
return r;
}
int main()
{
fin >> N;
for(int i = 1; i <= N; i++){
fin >> v[i];
}
fin >> nrc
for(int j = 0; j < nrc; j++){
fin >> c >> x;
if(c == 0){
fout << c << caut0(x) << "\n";
}
else if(c == 1){
fout << c << caut1(x) << "\n"
}
else if(c == 2){
fout << c << caut2(x);
}
}
return 0;
}