Pagini recente » Cod sursa (job #986054) | Cod sursa (job #2786875) | Cod sursa (job #1751257) | Cod sursa (job #1442360) | Cod sursa (job #1691242)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
unsigned int n, m, v[100001], i, x, p, lt, rt, mid;
int found;
int main()
{
f >> n;
for(i = 1; i <= n; i++)
f >> v[i];
f >> m;
for(i = 1; i <= m; i++)
{
f >> p >> x;
lt = 0;
rt = n;
found = -1;
while(lt <= rt)
{
mid = lt + (rt-lt)/2;
//if(p == 0)
//{
if(v[mid] == x)
{
if(p == 0)
{
while(v[mid+1] == x)
mid++;
found = mid;
}
else if(p == 1)
{
while(v[mid+1] <= x)
mid++;
found = mid;
}
else if(p == 2)
{
while(v[mid-1] >= x)
mid--;
found = mid;
}
break;
}
else if(v[mid] < x)
lt = mid+1;
else if(v[mid] > x)
rt = mid-1;
//}
}
if(found == -1)
g << -1 << "\n";
else
g << found << "\n";
}
f.close();
g.close();
}