Pagini recente » Cod sursa (job #1400501) | Cod sursa (job #1079375) | Cod sursa (job #744488) | Autentificare | Cod sursa (job #1596580)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m;
vector <int> p;
void citire();
void operatii();
int main()
{
citire();
operatii();
return 0;
}
void citire()
{
int i, x;
fin>>n;
for(i=1;i<=n;++i)
{
fin>>x;
p.push_back(x);
}
}
void operatii()
{
int i, t, x, poz;
fin>>m;
for(i=1;i<=m;++i)
{
fin>>t>>x;
//upper_bound(_, _, x) pointer la primul element mai mare decat x
//lower_bound(_, _, x) pointer la primul element care nu este mai mic decat x
if(t==0)
{
poz=upper_bound(p.begin(), p.end(), x)-p.begin()-1;
if(p[poz]!=x) poz=-2;//devine -1
fout<<poz+1;//numerele sunt memorate de la 0
}
if(t==1)
{
poz=upper_bound(p.begin(), p.end(), x)-p.begin();
if(p[poz]!=x) --poz;
fout<<poz+1;//numerele sunt memorate de la 0
}
if(t==2)
fout<<lower_bound(p.begin(), p.end(), x)-p.begin()+1;//numerele sunt memorate de la 0
fout<<'\n';
}
}