Pagini recente » Cod sursa (job #526783) | Cod sursa (job #3241984) | Cod sursa (job #2566727) | Cod sursa (job #2982308) | Cod sursa (job #418551)
Cod sursa(job #418551)
//cautbin de pe infoarena, folosind STL(upper si lower bound)
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
int i,n,m,x,op,a;
vector<int> V;
vector<int>::iterator p;
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
V.push_back(0);
for(i=1;i<=n;i++)
{
scanf("%d",&x);
V.push_back(x);
}
}
void solve()
{
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&op,&a);
switch(op)
{
case 0:
printf("%d\n",(p = upper_bound(V.begin(),V.end(),a))!= V.end()&&p!=V.begin() ? p-V.begin()-1 : -1);
break;
case 1:
printf("%d\n",(p = lower_bound(V.begin(),V.end(),a+1))!= V.end() ? p-V.begin()-1 : -1);
break;
case 2:
printf("%d\n",(p = upper_bound(V.begin(),V.end(),a-1))!= V.end() ? p-V.begin() : -1);
break;
}
}
}