Pagini recente » Cod sursa (job #1194701) | Cod sursa (job #632500) | Cod sursa (job #2599349) | Cod sursa (job #1408707) | Cod sursa (job #2917041)
#include <iostream>
#include <fstream>
std::ifstream fin("euclid2.in.txt");
std::ofstream fout("euclid2.out.txt");
void cautare_binara_0(int* x, int nr, int number, int st, int dr, int pos) {
int mid = st + (dr - st) / 2;
while (st <= dr && x[mid] == number)
{
if (mid > pos)
{
pos = mid + 1;
st = mid + 1;
}
else
{
dr = mid - 1;
}
mid = st + (dr - st) / 2;
}
std::cout << pos + 1;
}
void cautare_binara_1(int* x, int nr, int number, int st, int dr, int pos) {
int mid = st + (dr - st) / 2;
while (st <= dr && x[mid] <= number)
{
if (x[mid] <= number)
{
if (mid > pos)
{
pos = mid + 1;
st = mid + 1;
}
else
{
dr = mid - 1;
}
}
mid = st + (dr - st) / 2;
}
std::cout << pos + 1;
}
void cautare_binara_2(int* x, int nr, int number, int st, int dr, int pos) {
int mid = st + (dr - st) / 2;
while (st <= dr && x[mid] >= number)
{
if ((mid > pos && pos == -1) || (mid < pos))
{
pos = mid + 1;
dr = mid - 1;
}
else
{
st = mid + 1;
}
mid = st + (dr - st) / 2;
}
std::cout << pos + 1;
}
void operations(int* x, int n) {
int nr;
int number;
while (fin >> nr >> number)
{
if (nr == 0)
{
cautare_binara_0(x, nr, number, 0, n - 1, -1);
}
else if (nr == 1)
{
cautare_binara_1(x, nr, number, 0, n - 1, -1);
}
else
{
cautare_binara_2(x, nr, number, 0, n - 1, -1);
}
}
}
int main() {
int n;
fin >> n;
int* x = new int[n];
for (int i = 0; i < n; i++) {
fin >> x[i];
}
int m;
fin >> m;
operations(x, n);
return 0;
}