Pagini recente » Cod sursa (job #2000018) | Monitorul de evaluare | Cod sursa (job #283476) | Rating Plotogea Iulia Daniela (Iulia26) | Cod sursa (job #1252684)
#include <fstream>
#define NMAX 100001
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int N,v[NMAX],p=1;
int binsearch (int x)
{
int i,step=p;
for(i=0;step;step>>=1)
if(i+step<=N && v[i+step]<=x)
i+=step;
return i;
}
int searchmore(int x)
{
int i,step=p;
for(i=0;step;step>>=1)
if(i+step<=N && v[i+step]<x)
i+=step;
return i+1;
}
int main()
{
f>>N;
int i,q,t,x;
for(i=1;i<=N;i++)
f>>v[i];
while(p<N)
p<<=1;
f>>q;
while(q--)
{
f>>t>>x;
if(t==0)
{
i=binsearch(x);
if(v[i]==x)
g<<i<<'\n';
else g<<-1<<'\n';
}
else if (t==1)
g<<binsearch(x)<<'\n';
else g<<searchmore(x)<<'\n';
}
}