Pagini recente » Cod sursa (job #300739) | Cod sursa (job #1428893) | Cod sursa (job #1748681) | Cod sursa (job #2186160) | Cod sursa (job #1527518)
#include <fstream>
int v[100001];
int cautbin0(int x , int n)
{
int i , pas , k=-1;
pas=1<<16;
i=0;
while(pas!=0)
{
if(v[i+pas]==x and i+pas <=n)
{
k=i+pas;
i+=pas;
pas/=2;
}
}
return k ;
}
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)
{
k=i+pas;
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;
}
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
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);
}
if(tip==1)
{
out << cautbin1(sol,n);
}
if(tip==2)
{
out << cautbin2(sol,n);
}
}
return 0;
}