Pagini recente » Cod sursa (job #1130720) | Cod sursa (job #1714792) | Cod sursa (job #2022774) | Cod sursa (job #164545) | Cod sursa (job #990568)
Cod sursa(job #990568)
#include<fstream>
#define dmax 100003
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n, m;
int array[dmax];
int binary_search(int nr)
{
int lo = 0;
int hi = n-1;
int mid;
while(lo <= hi)
{
mid = lo + (hi-lo)/2;
if(array[mid] == nr)
return mid;
else if(array[mid] < nr)
lo = mid+1;
else if(array[mid] > nr)
hi = mid-1;
}
return mid;
}
int main()
{
in>>n;
for(int i=1; i<=n; i++)
in>>array[i];
in>>m;
for(int i=1; i<=m; i++)
{
int op;
int nr;
in>>op>>nr;
int index = binary_search(nr);
if(op == 0)
{
while(array[index+1] == nr && index < n)
index++;
if(array[index] == nr)
out<<index<<'\n';
else out<<"-1\n";
}
else if(op == 1)
{
while(array[index+1] == nr && index < n)
index++;
while(array[index] > nr && index > 1)
index--;
out<<index<<'\n';
}
else if(op == 2)
{
while(array[index-1] == nr && index > 1)
index--;
while(array[index] < nr && index <= n)
index++;
out<<index<<'\n';
}
}
in.close();
out.close();
return 0;
}