Pagini recente » Cod sursa (job #1083312) | Cod sursa (job #1954441) | Cod sursa (job #935223) | Cod sursa (job #1118486) | Cod sursa (job #1068971)
#include<stdio.h>
using namespace std;
int v[100005];
int main ()
{
FILE *in,*out;
in=fopen("cautbin.in","r");
out=fopen("cautbin.out","w");
int n;
fscanf(in,"%d",&n);
int sol=0,ct=0,put=1;
while (put<n)
{
put=put*2;
ct++;
}
int i,pas=1<<ct-1;
for (i=1;i<=n;i++)
{
fscanf(in,"%d",&v[i]);
}
int k,x,intr;
fscanf(in,"%d",&k);
for (i=0;i<k;i++)
{
fscanf(in,"%d%d",&intr,&x);
pas=1<<ct-1;
sol=0;
if (intr==0)
{
while(pas>0)
{
if(sol+pas <=n && v[sol+pas]==x)
sol+=pas;
pas>>=1;
}
if (v[sol]==x)
fprintf(out,"%d\n",sol);
else
fprintf(out,"-1\n");
}
if (intr==1)
{
while(pas>0)
{
if(sol+pas <n && v[sol+pas]<=x)
sol+=pas;
pas>>=1;
}
fprintf(out,"%d\n",sol);
}
if (intr==2)
{
while(pas>0)
{
if(pas-sol >0 && v[sol+pas]<=x-1)
sol+=pas;
pas>>=1;
}
fprintf(out,"%d\n",sol+1);
}
}
return 0;
}