Pagini recente » Cod sursa (job #867776) | Cod sursa (job #655717) | Cod sursa (job #275788) | Cod sursa (job #3143965) | Cod sursa (job #1358708)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int N,M,i,j,op,x,poz;
int v[100002];
int bs(int,int);
int main()
{
f>>N;
for (i=1;i<=N;++i)
f>>v[i];
f>>M;
for (j=0;j<M;++j)
{
f>>op>>x;
poz=bs(1,N);
//cout<<poz<<' ';
if (op==0)
{
if (v[poz]==x)
g<<poz<<'\n';
else
g<<-1<<'\n';
}
else if (op==1)
{
if (v[poz]==x)
{
while(v[poz+1]==x)
++poz;
g<<poz<<'\n';
}
else
{
while (v[poz]>x)
--poz;
g<<poz<<'\n';
}
}
else
{
if (v[poz]==x)
{
while(v[poz-1]==x)
--poz;
g<<poz<<'\n';
}
else
{
while (v[poz]<x)
++poz;
g<<poz<<'\n';
}
}
}
f.close();g.close();
return 0;
}
int bs(int st,int dr)
{
if (st<dr)
{
int mij=(st+dr)/2;
if (x==v[mij])
{
return mij;
}
if (x<v[mij])
return bs(st,mij-1);
else
return bs(mij+1,dr);
}
else
return st;
}