Pagini recente » Cod sursa (job #142135) | Cod sursa (job #2438034) | Cod sursa (job #312013) | Cod sursa (job #185179) | Cod sursa (job #1428572)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("cautbin.in"); ofstream g("cautbin.out");
int main()
{
int n, m, A[100010], tip, poz, x;
f>>n;
for(int i=0; i<n; i++) f>>A[i]; /// Se citeste vectorul
f>>m;
for(;m;m--)
{
f>>tip>>x; /// Citim tipul intrebarii si numarul cautat
if(tip==0)
{
poz=upper_bound(A, A+n, x) - A; /// Calculam prima pozitie unde A[poz] > x
poz--; /// Scadem o unitate din poz deoarece functia a returnat poziția urmatoare celei care ne intereseaza
if(poz>=0 and poz<n and A[poz]==x) /// Verificam daca poz satisface conditiile
g<<poz+1<<'\n'; /// Afisam pozitia marita cu o unitate, deoarece am citit vectorul de la 0
else g<<-1<<'\n';
}
else if(tip==1)
{
poz=upper_bound(A, A+n, x) - A;
// poz--;
/// Nu mai avem nevoie de conditia de la tipul 1
g<<poz<<'\n';
}
else if(tip==2)
{
poz=lower_bound(A, A+n, x) - A; /// Calculam exact pozitia de care avem nevoie
g<<poz+1<<'\n'; /// Din nou, afisam pozitia marita cu o unitate, deoarece am citit vectorul de la 0
}
}
g.close(); return 0;
}