Pagini recente » Cod sursa (job #1311633) | Cod sursa (job #121608) | Cod sursa (job #3161579) | Cod sursa (job #471732) | Cod sursa (job #1202400)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int MAXN = 100005;
int n;
int v[MAXN];
void rezolva0(int x)
{
int st, dr;
st = 1 ;
dr = n;
int poz = 0;
while(dr - st > 1)
{
int mij = (st + dr) / 2;
if (x < v[mij])
{
dr = mij;
}
else if (x > v[mij])
{
st = mij;
}
else if (x == v[mij])
{
poz = mij;
st = mij;
}
}
if (poz == 0)
{
out << -1 << "\n";
}
else
{
out << poz << "\n";
}
}
void rezolva1(int x)
{
int poz = 0;
int st = 1, dr = n;
while(dr - st > 1)
{
int mij = (st + dr) / 2;
if (x > v[mij])
{
dr = mij;
}
else if (x <= v[mij])
{
st = mij;
poz = st;
}
}
out << poz << "\n";
}
void rezolva2(int x)
{
int poz = 0;
int st = 1, dr = n;
while(dr - st > 1)
{
int mij = (st + dr) / 2;
if (x < v[mij])
{
st = mij;
}
else if (x >= v[mij])
{
dr = mij;
poz = mij;
}
}
out << poz << "\n";
}
int main()
{
in >> n;
for (int i = 1; i <= n; i++)
{
in >> v[i];
}
int m;
in >> m;
for (int i = 0; i < m; i++)
{
int x, y;
in >> x >> y;
if (x == 0)
{
rezolva0(y);
}
else if (x == 1)
{
rezolva0(y + 1);
}
else if (x == 2)
{
rezolva2(y);
}
}
return 0;
}