Pagini recente » Cod sursa (job #2598039) | Cod sursa (job #1915389) | Cod sursa (job #341070) | Cod sursa (job #2100801) | Cod sursa (job #1599400)
// Day5V5.cpp : Defines the entry point for the console application.
//
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100010], n;
int BinZero(int value);
int BinOne(int value);
int BinTwo (int value);
void citire() {
int nr,nrFu,tip,value;
f >> n;
for (int i = 1; i <= n; ++i) {
f >> nr;
a[i] = nr;
}
f >> nrFu;
for (int i = 1; i <= nrFu; ++i) {
f >> tip >> value;
if (tip == 0)
g <<BinZero(value)<<"\n";
if (tip == 1) {
g << BinTwo(value)<<"\n";
}
if (tip == 2)
g << BinOne(value)<<"\n";
}
}
int BinZero(int value) {
int low = 1, high = n, mid = (low + high / 2);
while (low <= high) {
mid = (low + high) / 2;
if (a[mid] <= value)
low = mid + 1;
else
high = mid - 1;
}
mid = (low + high) / 2;
if (a[mid] > value)
--mid;
if (a[mid] == value)
return mid;
return -1;
}
int BinOne(int value) {
int low = 1, high = n, mid = (low + high / 2);
while (low <= high) {
mid = (low + high) / 2;
if (a[mid] < value)
low = mid + 1;
else
high = mid - 1;
}
mid = (low + high) / 2;
if (a[mid] < value)
++mid;
if (a[mid] == value)
return mid;
return -1;
}
int BinTwo(int value) {
int low = 1, high = n, mid = (low + high / 2);
while (low <= high) {
mid = (low + high) / 2;
if (a[mid] <= value)
low = mid + 1;
else
high = mid - 1;
}
mid = (low + high) / 2;
if (a[mid] > value)
--mid;
if (a[mid] == value)
return mid;
return -1;
}
int main()
{
citire();
return 0;
}