Pagini recente » Cod sursa (job #2375119) | Cod sursa (job #538603) | Cod sursa (job #1593701) | Cod sursa (job #1607422) | Cod sursa (job #1961105)
#include <algorithm>
#include <fstream>
#include <iostream>
using namespace std;
int n,m,a[100001],i,t,x,sol;
int cautbin0(int p, int u, int k)
{ int mij;
while(p<=u)
{
mij=(p+u)/2;
if(a[mij]<=k)
{
p=mij+1;
}
else
{
u=mij-1;
}
}
mij=(p+u)/2;
if(k>a[mij])
mij--;
if(a[mij]==k)
return mij;
return -1;
}
int cautbin1(int p, int u, int k)
{ int mij;
while(p<u)
{
mij=(p+u)/2;
if(a[mij]<=k)
{
p=mij+1;
}
else
u=mij;
}
mij=(u+p)/2;
if(a[mij]>k)
mij--;
return mij;
}
int cautbin2(int p, int u, int k)
{
int mij;
while(p<u)
{
mij=(p+u)/2;
if(a[mij]<k)
{
p=mij+1;
}
else
u=mij;
}
mij=(u+p)/2;
if(a[mij]<k)
mij++;
return mij;
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
for(i=1; i<=n; i++)
scanf("%d", &a[i]);
sort(a+1,a+n+1);
scanf("%d", &m);
for(i=1; i<=m; i++)
{
scanf("%d%d", &t, &x);
if(t==0)
{
printf("%d\n", cautbin0(1,n,x));
}
else
if(t==1)
printf("%d\n", cautbin1(1,n,x));
else
if(t==2)
printf("%d\n", cautbin2(1,n,x));
}
return 0;
}