Pagini recente » Cod sursa (job #1554881) | Cod sursa (job #1675881) | Cod sursa (job #554072) | Cod sursa (job #1318392) | Cod sursa (job #2165345)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
int n,m,T,x;
int c[100000];
int cautbin_1 (int x)
{
int poz=0;
for (int i=1<<20;i>0;i=i>>1)
{
if (poz+i<=n)
if (c[poz+i]<=x)
poz+=i;
}
if (c[poz]==x)
return poz;
else
return -1;
}
int cautbin_2 (int x)
{
int poz=0;
for (int i=1<<20;i>0;i=i>>1)
if (poz+i<=n)
if (c[poz+i]<=x)
poz+=i;
return poz;
}
int cautbin_3 (int x)
{
int poz=0;
for (int i=1<<20;i>0;i=i>>1)
if (poz+i<=n)
if (c[poz+i]<x)
poz+=i;
return poz+1;
}
int main()
{
in>>n;
for (int i=1;i<=n;++i)
in>>c[i];
in>>m;
for (int i=1;i<=m;++i)
{
in>>T>>x;
if (T==0)
out<<cautbin_1(x)<<'\n';
if (T==1)
out<<cautbin_2(x)<<'\n';
if (T==2)
out<<cautbin_3(x)<<'\n';
}
return 0;
}