Pagini recente » Istoria paginii utilizator/gabriel1 | Istoria paginii runda/daasdfasdf/clasament | Borderou de evaluare (job #498247) | Rezultatele filtrării | Cod sursa (job #1727378)
#include <stdio.h>
#include <vector>
std::vector<long> numere;
long bin_search0(std::vector<long> numere, int val)
{
int lo = -1,hi = numere.size();
while(hi - lo > 1)
{
int mid = lo + (hi-lo)/2;
if(numere[mid] <= val)
lo = mid;
else
hi = mid;
}
if(lo == -1 || numere[lo] != val)
return -1;
return lo +1;
}
long bin_search1(std::vector<long> numere, int val)
{
int lo = -1,hi = numere.size();
while(hi - lo > 1)
{
int mid = lo + (hi-lo)/2;
if(numere[mid] <= val)
lo = mid;
else
hi = mid;
}
return hi;
}
long bin_search2(std::vector<long> numere, int val)
{
int lo = -1,hi = numere.size();
while(hi - lo > 1)
{
int mid = lo + (hi-lo)/2;
if(numere[mid] < val)
lo = mid;
else
hi = mid;
}
return hi + 1;
}
int main()
{
int n,m,i,x,vecin;
int opt;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(i = 1; i <= n; i++)
scanf("%lld",&x),numere.push_back(x);
scanf("%lld",&m);
for(i = 1; i <= m; i++)
{
scanf("%d %lld",&opt,&vecin);
if(opt == 0)
printf("%d\n",bin_search0(numere,vecin));
else if(opt == 1)
printf("%d\n",bin_search1(numere,vecin));
else if(opt == 2)
printf("%d\n",bin_search2(numere,vecin));
}
return 0;
}