Pagini recente » Cod sursa (job #44710) | Cod sursa (job #237390) | Cod sursa (job #627026) | Cod sursa (job #3134268) | Cod sursa (job #1935202)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int n,m;
vector <int> sol;
vector <int>::iterator low,up;
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
int x;
for(int i=1;i<=n;i++)
{
scanf("%d", &x);
sol.push_back(x);
}
scanf("%d", &m);
int y;
for(int i=1;i<=m;i++)
{
scanf("%d %d", &x, &y);
if(x==0 or x==1)
{
up =upper_bound (sol.begin(), sol.end(), y);
if(x==1)
printf("%d\n", (up -sol.begin()));
else
{
if((up -sol.begin())==n and sol[n-1]!=y and x==0)
printf("%d\n", -1);
else
printf("%d\n", (up -sol.begin()));
}
}
if(x==2)
{
low=lower_bound (sol.begin(), sol.end(), y);
printf("%d\n", (low -sol.begin()+1));
}
}
return 0;
}