Pagini recente » Cod sursa (job #2625835) | Cod sursa (job #99341) | Cod sursa (job #32600) | Cod sursa (job #516836) | Cod sursa (job #2628993)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100001];
int cautare1(int x, int n)
{
int stanga = 0;
int dreapta = n+1;
int mijloc;
while(stanga < dreapta - 1)
{
mijloc = (stanga + dreapta) / 2;
if(v[mijloc] <= x)
{
stanga = mijloc;
}
else dreapta = mijloc;
}
return stanga;
}
int cautare2(int x, int n)
{
int stanga = 0;
int dreapta = n+1;
int mijloc;
while(stanga < dreapta - 1)
{
mijloc = (stanga + dreapta) / 2;
if(v[mijloc] >= x)
{
dreapta = mijloc;
}
else stanga = mijloc;
}
return dreapta;
}
int main()
{
int n, m, tip, x;
fin >> n;
for(int i = 1; i <= n; i++)
{
fin >> v[i];
}
fin >> m;
for(int i = 1; i <= m; i++)
{
fin >> tip >> x;
if(tip == 0)
{
int pozitie = cautare1(x, n);
if(v[pozitie] == x)
{
fout << pozitie << '\n';
}
else fout << -1 << '\n';
}
if(tip == 1)
{
fout << cautare1(x, n) << '\n';
}
if(tip == 2)
{
fout << cautare2(x, n) << '\n';
}
}
return 0;
}