Pagini recente » Cod sursa (job #1653574) | Cod sursa (job #1302646) | Rating Dave Wong (dwsc) | Cod sursa (job #2437913) | Cod sursa (job #2495109)
#include <bits/stdc++.h>
#define DimMax 100005
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
map<int, int> ma;
int n, m;
int a, b;
int v[DimMax];
void Fa1(int x)
{
int sol1, sol2;
long long st = 1, dr = n;
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 = 1, dr = n;
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 = 1;i <= n;i++)
{
fin>>v[i];
ma[v[i]] = i;
}
sort(v + 1, v + n + 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;
}