Pagini recente » Cod sursa (job #1064165) | Cod sursa (job #929919) | Cod sursa (job #1115122) | Cod sursa (job #385026) | Cod sursa (job #2325882)
#include <fstream>
using namespace std;
ifstream cin ("cautbin.in");
ofstream cout ("cautbin.out");
const int MAX = 1e5 + 14; // 10 ^ 5 + 14
int V[MAX];
int main()
{
int N, i, M;
cin>>N;
// for (initializare; conditie; incrementare/decrementare)
//for (i=N, i<=N, i++) - gresit
for (i = 1; i <= N; ++ i)
cin>>V[i];
cin>>M;
for (i=1; i<=M; i++)
{
int tip, x;
cin >> tip >> x;
if (tip == 0)
{
int left=1;
int right=N;
int gasit=1;
while (left <= right)
{
int mijloc = (left + right)/2;
if (V[mijloc] <= x)
{
left=mijloc+1;
gasit=mijloc;
}
else
{
right= mijloc-1;
}
}
if (V[gasit]==x)
cout <<gasit<<'\n';
else
cout << -1<<'\n';
}
else if (tip ==1)
{
int left=1;
int right=N;
int gasit =1;
while (left <= right)
{
int mijloc = (left + right)/2;
if (V[mijloc]<=x)
{
left=mijloc+1;
gasit=mijloc;
}
else
{
right= mijloc-1;
}
}
cout <<gasit<<'\n';
}
else if (tip==2)
{
int left=1;
int right=N;
int gasit =1;
while (left <= right)
{
int mijloc = (left + right) / 2;
if (x <= V[mijloc])
{
right = mijloc - 1;
gasit = mijloc;
}
else
left = mijloc + 1;
}
cout << gasit << '\n';
}
}
return 0;
}