Pagini recente » Cod sursa (job #1385351) | Cod sursa (job #1462472) | Cod sursa (job #372824) | Cod sursa (job #814141) | Cod sursa (job #2495262)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
map<int, int> ma;
int n, m;
int a, b, x;
vector<int> v;
void Fa1(int x)
{
int sol1, sol2;
long long st = 0, dr = n - 1;
while(st <= dr)
{
long long mij = (st + dr) / 2;
if(v[mij] <= x)
{
st = mij + 1;
sol1 = mij;
}
else if(v[mij] > x)
dr = mij - 1;
}
fout<<sol1<<'\n';
}
void Fa2(int x)
{
int sol1, sol2;
long long st = 0, dr = n - 1;
while(st < dr)
{
long long mij = (st + dr) / 2;
if(v[mij] < x)
{
st = mij + 1;
}
else if(v[mij] >= x)
{
dr = mij - 1;
sol2 = mij;
}
}
fout<<sol2<<'\n';
}
int main()
{
fin>>n;
for(int i = 0;i < n;i++)
{
fin>>x; v.push_back(x);
ma[x] = i + 1;
}
sort(v.begin() + 1, v.end() + 1);
fin>>m;
for(int i = 1;i <= m;i++)
{
fin>>a>>b;
if(a == 0)
{
if(ma[b] == 0) fout<<-1<<'\n';
else fout<<ma[b]<<'\n';
}
else if(a == 1) Fa1(b);
else if(a == 2) Fa2(b);
}
return 0;
}