Pagini recente » Cod sursa (job #919906) | Cod sursa (job #2707764) | Cod sursa (job #3041540) | Cod sursa (job #1682876) | Cod sursa (job #1343653)
#include <fstream>
using namespace std;
short v[100005];
short *ctb(short *st,short *dr, short x)
{
if (dr-st<=1) return st;
int m=(dr-st)/2;
if (*(st+m)==x) return st+m;
if (*(st+m)<x) return ctb(st+m,dr,x);
return ctb(st,st+m,x);
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,i,ii,m,t,x;
short *p;
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
f>>m;
for (ii=1;ii<=m;ii++)
{
f>>t>>x;
if (t==0)
{
p=ctb(v+1,v+n,x);
if (*p==x)
{
while ((*p)==x) p++;
g<<p-v-1<<'\n';
}
else g<<"-1\n";
}
else
if (t==1)
{
p=ctb(v+1,v+n,x);
if ((*p)==x)
{
while ((*p)<=x) p++;
g<<p-v-1<<'\n';
}
else g<<p-v<<'\n';
}
else
if (t==2)
{
p=ctb(v+1,v+n,x);
if ((*p)==x)
{
while ((*p)>=x) p--;
g<<p-v+1<<'\n';
}
else g<<p-v+1<<'\n';
}
}
delete p;
f.close();
g.close();
return 0;
}