Pagini recente » Cod sursa (job #1235565) | Profil Margarit_Vicentiu_322CC | Cod sursa (job #3239270) | Cod sursa (job #2485594) | Cod sursa (job #670784)
Cod sursa(job #670784)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
const int N=100001;
int i,m,n,v[N];
int cautbin0 (int b)
{
int i,pas=1<<16;
for(i=0;pas!=0;pas>>=1)
{
if(i+pas<=n && v[i+pas]<=b)
{
i+=pas;
}
}
if (v[i]==b) return i;
return -1;
}
int cautbin1 (int b)
{
int i,pas=1<<16;
for(i=0;pas!=0;pas>>=1)
{
if(i+pas<=n && v[i+pas]<=b)
{
i+=pas;
}
}
return i;
}
int cautbin2 (int b)
{
int i,pas=1<<16;
for(i=0;pas!=0;pas>>=1)
{
if(i+pas<=n && v[i+pas]<b)
{
i+=pas;
}
}
return i+1;
}
int main()
{
int a,x;
in>>n;
for(i=1;i<=n;i++)
{
in>>v[i];
}
in>>m;
while (m>0)
{
in>>a>>x;
if(a==0)
out<<cautbin0(x)<<'\n';
if(a==1)
out<<cautbin1(x)<<'\n';
if(a==2)
out<<cautbin2(x)<<'\n';
m--;
}
return 0;
}