Witam, mam takie zadanie:
Masz daną posortowaną tablicę liczb nieujemnych nie dłuższą niż milion elementów. Dla każdego zapytania o liczbę x odpowiedz, ile liczb w tej tablicy jest nie mniejszych niż xi.
dla liczb :
liczby w tab-3 4 8 11 23 54 996 8710 911147 10001010
zaputania -1 0 8 64 99 114 334 8484 41 911147 1000000000
ma wypisać:
10 10 8 4 4 4 4 3 5 2 0
Mój program:
#include <iostream>
using namespace std;
int tab[1000002];
int b(int l,int p,int z);
int main()
{
int n,m,z,p,l;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&tab[i]);
}
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d",&z);
p=b(0,n-1,z);
l=n-p;
printf("%d ",l);
}
return 0;
}
int b(int l,int p,int z)
{
int sr;
while(l<=p){
sr=(l+p)/2;
if(tab[sr]>=z){
p = sr-1;
}
else
l = sr+1;
}
return sr;
}
Mi wypisuje 10 10 8 4 4 4 4 4 5 2 1
Sprawdzałem to kilka razy ,ale nie mogę się doszukać błędu.
Z góry dzięki za podpowiedzi!