Pagini recente » Cod sursa (job #87840) | Cod sursa (job #1851348) | Cod sursa (job #2326570) | Cod sursa (job #1001890) | Cod sursa (job #1680374)
#include <fstream>
#define nmax 100010
using namespace std;
unsigned int n;
unsigned int v[nmax];
int binss(unsigned int val)
{
int i,step;
for (step=1;step<=n;step<<=1);
for (i=1;step;step>>=1)
{
if (i+step<=n && v[i+step]<=val)
i+=step;
}
return i;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
unsigned int m,i,op,x;
int poz;
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
for (f>>m;m;m--)
{
f>>op>>x;
poz=binss(x);
if (v[poz]!=x)
{
if (op==0) g<<"-1\n";
else
{
if (op==1) g<<poz<<'\n';
else
{
while (v[poz]<=x) poz++;
g<<poz<<'\n';
}
}
}
else
{
if (op==2)
{
while (v[poz]>=x) poz--;
g<<poz+1<<'\n';
}
else g<<poz<<'\n';
}
}
f.close();
g.close();
return 0;
}