Pagini recente » Cod sursa (job #1314818) | Cod sursa (job #2615141) | Cod sursa (job #99635) | Cod sursa (job #1136) | Cod sursa (job #2619153)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int nr_de_elemente, v[100001], t;
int Maxim(int nr, int st, int dr)
{
int last = -2;
while (st <= dr)
{
int mijloc = st + (dr - st) / 2;
if (v[mijloc] == nr)
{
last = mijloc;
st = mijloc + 1;
}
else if (nr < v[mijloc])
{
dr = mijloc - 1;
}
else
{
st = mijloc + 1;
}
}
return last + 1;
}
int ex1(int nr, int st, int dr)
{
int last = -1;
while (st <= dr)
{
int mijloc = st + (dr - st) / 2;
if (v[mijloc] == nr)
{
last = mijloc;
st = mijloc + 1;
}
else if (nr < v[mijloc])
{
dr = mijloc - 1;
}
else
{
st = mijloc + 1;
last = mijloc;
}
}
return last + 1;
}
int ex2(int nr, int st, int dr)
{
int last = -1;
while (st <= dr)
{
int mijloc = st + (dr - st) / 2;
if (v[mijloc] == nr)
{
last = mijloc;
dr = mijloc - 1;
}
else if (nr < v[mijloc])
{
dr = mijloc - 1;
last = mijloc;
}
else
{
st = mijloc + 1;
}
}
return last + 1;
}
int main()
{
f >> nr_de_elemente;
for (int i = 0; i < nr_de_elemente; i++)
{
f >> v[i];
}
f >> t;
while (t > 0)
{
t--;
int optiune, x;
f >> optiune >> x;
switch (optiune)
{
case 0:
g << Maxim(x, 0, nr_de_elemente - 1) << '\n';
break;
case 1:
g << ex1(x, 0, nr_de_elemente - 1) << '\n';
break;
case 2:
g << ex2(x, 0, nr_de_elemente - 1) << '\n';
break;
}
}
}