Pagini recente » Cod sursa (job #2385239) | Cod sursa (job #162699) | Cod sursa (job #2631932) | Cod sursa (job #1938582) | Cod sursa (job #2623044)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100001], mij, n, i, x, opt, m, p, q;
void cautare(int x)
{
p = 1;
q = n;
while(p <= q)
{
mij = (p + q) / 2;
if(a[mij] == x)
break;
else if(a[mij] > x)
q = mij - 1;
else if(a[mij] < x)
p = mij + 1;
}
}
int main()
{
f >> n;
for(i = 1; i <= n; ++i)
f >> a[i];
f >> m;
for(i = 1; i <= m; ++i)
{
f >> opt >> x;
if(opt == 0)
{
cautare(x);
if(a[mij] == x)
{
while(a[mij + 1] == x)
mij++;
g << mij << '\n';
}
else
g << -1 << '\n';
}
if(opt == 1)
{
cautare(x);
if(a[mij] == x)
{
while(a[mij + 1] == x)
mij++;
}
else if(a[mij] > x)
mij--;
g << mij << '\n';
}
if(opt == 2)
{
cautare(x);
if(a[mij] == x)
{
while(a[mij - 1] == a[mij])
mij--;
}
else if(a[mij] < x)
mij++;
g << mij << '\n';
}
}
return 0;
}