Pagini recente » Cod sursa (job #2340688) | Cod sursa (job #5379) | Cod sursa (job #1620680) | Cod sursa (job #1563010) | Cod sursa (job #1028654)
#include <fstream>
#include <iostream>
using namespace std;
int v[100001],n;
int cautbin0(int *v, int x)
{
int putere=(1<<30);
int poz=1;
while(putere)
{
if(poz+putere<=n&&v[poz+putere]<=x)
poz+=putere;
putere>>=1;
}
if(v[poz]==x)return poz;
else return -1;
}
int cautbin1(int *v, int x)
{
int putere=(1<<30);
int poz=1;
while(putere)
{
if(poz+putere<=n&&v[poz+putere]<=x)
poz+=putere;
putere>>=1;
}
return poz;
}
int cautbin2(int *v, int x)
{
int putere=(1<<30);
int poz=1;
while(putere)
{
if(poz+putere<=n&&v[poz+putere]<x)
poz+=putere;
putere>>=1;
}
return poz+1;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
int k,x,tip;
f>>k;
for(int i=0;i<k;i++)
{
f>>tip;
f>>x;
switch(tip)
{
case 0:
g<<cautbin0(v,x)<<'\n';
break;
case 1:
g<<cautbin1(v,x)<<'\n';
break;
case 2:
g<<cautbin2(v,x)<<'\n';
break;
default:
break;
}
}
return 0;
}