Pagini recente » Cod sursa (job #2059242) | Cod sursa (job #998315) | Cod sursa (job #1073655) | Cod sursa (job #2868959) | Cod sursa (job #858404)
Cod sursa(job #858404)
#include <fstream>
#define NMAX 100001
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int putere=1,N,V[NMAX],M;
void cautare_binara0(int x)
{
int p,u;
u=putere;
p=1;
while (u>0)
{if (p+u<=N&&V[p+u]<=x)
p+=u;
u>>=1;
}
if (V[p]!=x) g<<"-1 \n";
else g<<p<<"\n";
}
void cautare_binara1(int x)
{
int p,u;
u=putere;
p=1;
while (u>0)
{if (p+u<=N&&V[p+u]<=x)
p+=u;
u>>=1;
}
g<<p<<"\n";
}
void cautare_binara2(int x)
{
int p,u;
u=putere;
p=1;
while (u>0)
{if (p+u<=N&&V[p+u]<x)
p+=u;
u>>=1;
}
g<<p+1<<"\n";
}
int main()
{ int op,x,i;
f>>N;
while (putere*2<=N) putere<<=1;
for (i=1;i<=N;i++)
f>>V[i];
f>>M;
for (i=1;i<=M;i++)
{f>>op>>x;
switch (op)
{
case 0:
cautare_binara0(x);
break;
case 1:
cautare_binara1(x);
break;
case 2:
cautare_binara2(x);
break;
}
}
return 0;
}