Pagini recente » Cod sursa (job #20869) | Cod sursa (job #3211881) | Cod sursa (job #3149131) | Cod sursa (job #1018516) | Cod sursa (job #3286951)
#include <bits/stdc++.h>
using namespace std;
int binarySearch1(vector<int> arr, int st, int dr, int key)
{
int ans = -1;
while(st <= dr)
{
int mid = st + (dr - st) / 2;
if(arr[mid] <= key)
{
ans = mid;
st = mid + 1;
}
else
dr = mid - 1;
}
return ans;
}
int binarySearch2(vector<int> arr, int st, int dr, int key)
{
int ans = -1;
while(st <= dr)
{
int mid = st + (dr - st) / 2;
if(arr[mid] >= key)
{
ans = mid;
dr = mid - 1;
}
else
st = mid + 1;
}
return ans;
}
int binarySearch3(vector<int> arr, int st, int dr, int key)
{
int ans = -1;
while(st <= dr)
{
int mid = st + (dr - st) / 2;
if(arr[mid] == key)
{
ans = mid;
st = mid + 1;
}
else if(arr[mid] < key)
st = mid + 1;
else
dr = mid - 1;
}
return ans;
}
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, i, q, x;
fin >> n;
vector<int> arr(n+1);
for(i = 1; i <= n; i++)
{
fin >> arr[i];
}
int question;
fin >> q;
for(i = 0; i < q; i++)
{
fin >> question >> x;
if(question == 1)
{
fout << binarySearch1(arr, 1, n, x) << "\n";
}
else if(question == 2)
{
fout << binarySearch2(arr, 1, n, x) << "\n";
}
else
{
fout << binarySearch3(arr, 1, n, x) << "\n";
}
}
return 0;
}