Pagini recente » Cod sursa (job #992893) | Cod sursa (job #148545) | Statistici Herescu Vlad (suta) | Monitorul de evaluare | Cod sursa (job #1254940)
#include <cstdio>
using namespace std;
int n,v[10000];
struct cerinta
{
bool da;
int val;
}a1,a2,a0;
void citire()
{
a0.da=false;
a1.da=false;
a2.da=false;
int x,m;
freopen("cautbin.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d",&x);
if(x==0)
{
a0.da=true;
scanf("%d",&a0.val);
}
if(x==1)
{
a1.da=true;
scanf("%d",&a1.val);
}
if(x==2)
{
a2.da=true;
scanf("%d",&a2.val);
}
}
}
int cautbin0(int x)
{
int poz=1, pas=1<<21;
while(pas>>=1)
{
if(pas+poz<n && v[pas+poz]<=x)
poz+=pas;
}
if(v[poz]==a0.val)
return poz;
return -1;
}
int cautbin1(int x)
{
int poz=1, pas=1<<21;
while(pas>>=1)
{
if(pas+poz<n && v[pas+poz]<=x)
poz+=pas;
}
return poz;
}
int cautbin2(int x)
{
int poz=1, pas=1<<21;
while(pas>>=1)
{
if(pas+poz<n && v[pas+poz]<x)
poz+=pas;
}
if(v[poz]<x)
poz++;
return poz;
}
int main()
{
int x;
freopen("cautbin.out","w",stdout);
citire();
if(a0.da==true)
printf("%d\n",cautbin0(a0.val));
if(a1.da==true)
printf("%d\n",cautbin1(a1.val));
if(a2.da==true)
printf("%d\n",cautbin2(a2.val));
return 0;
}