Pagini recente » Cod sursa (job #462565) | Cod sursa (job #422973) | Cod sursa (job #2858611) | Cod sursa (job #2454716) | Cod sursa (job #1527521)
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int v[100001];
int cautbin0(int x , int n)
{
int i , pas;
pas=1<<16;
i=0;
while(pas!=0)
{
if(i+pas <=n and v[i+pas]==x)
{
i+=pas;
}
pas/=2;
}
if (v[i] != x)
return -1;
return i;
}
int cautbin1 (int x , int n)
{
int i , pas,k;
pas=1<<16;
i=0;
while(pas!=0)
{
if(v[i+pas]<=x and i+pas<=n)
{
i+=pas;
}
pas/=2;
}
return i;
}
int cautbin2 (int x , int n)
{
int i , pas;
pas=1<<16;
i=0;
while(pas!=0)
{
if(v[i+pas]<x and i+pas <=n)
{
i+=pas;
}
pas/=2;
}
return i+1;
}
int main()
{
int n,i,m,sol,tip;
in >> n;
for(i=1; i<=n; i++)
{
in >> v[i];
}
in >> m;
for(i=1; i<=m; i++)
{
in >> tip >> sol ;
if(tip==0)
{
out << cautbin0(sol,n) << '\n';
}
if(tip==1)
{
out << cautbin1(sol,n) << '\n';
}
if(tip==2)
{
out << cautbin2(sol,n) << '\n';
}
}
return 0;
}