Pagini recente » Cod sursa (job #2551452) | Cod sursa (job #2749872) | Cod sursa (job #2887159) | Cod sursa (job #709615) | Cod sursa (job #2561066)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100009], n, m;
int cerinta0(int x)
{
int st = 1, dr = n, mid;
while (st <= dr)
{
mid = (st + dr) / 2;
if (a[mid] == x && (mid == n || a[mid+1] > x))
{
return mid;
}
else if (a[mid] <= x)
st = mid + 1;
else
dr = mid - 1;
}
return -1;
}
int cerinta1(int x)
{
int st = 1, dr = n, mid;
while (st <= dr)
{
mid = (st + dr) / 2;
if (a[mid] <= x && (mid == n || a[mid+1] > x))
{
return mid;
}
else if (a[mid] <= x)
st = mid + 1;
else
dr = mid - 1;
}
}
int cerinta2(int x)
{
int st = 1, dr = n, mid;
while (st <= dr)
{
mid = (st + dr) / 2;
if (a[mid] >= x && (mid == 1 || a[mid-1] < x))
{
return mid;
}
else if (a[mid] < x)
st = mid + 1;
else
dr = mid - 1;
}
}
int main()
{
int c, x;
f>>n;
for (int i = 1; i <= n; ++i)
f>>a[i];
f>>m;
for (int i = 1; i <= m; ++i)
{
f>>c>>x;
if (c == 0)
g<<cerinta0(x)<<'\n';
else if (c == 1)
g<<cerinta1(x)<<'\n';
else if (c == 2)
g<<cerinta2(x)<<'\n';
}
f.close();
g.close();
return 0;
}