Pagini recente » Cod sursa (job #281595) | Cod sursa (job #956471) | Cod sursa (job #2836205) | Cod sursa (job #2426930) | Cod sursa (job #873587)
Cod sursa(job #873587)
#include <iostream>
#include<cstdio>
using namespace std;
int a[100005];
int n;
int bs(int v[],int x)
{
long long pas,i=0;
for(pas=1<<18;pas>=1;pas>>=1)
if(i+pas<=n && v[i+pas]<=x)
i=i+pas;
return i;
}
int main()
{
FILE *in,*out;
in=fopen("cautbin.in","r");
out=fopen("cautbin.out","w");
int m,j,y,z,r;
fscanf(in,"%d",&n);
for(j=1;j<=n;j++)
fscanf(in,"%d",&a[j]);
fscanf(in,"%d",&m);
for(j=1;j<=m;j++)
{
fscanf(in,"%d",&y);
fscanf(in,"%d",&z);
if(y==0)
{
r=bs(a,z);
if(a[r]==z)
fprintf(out,"%d\n",r);
else
fprintf(out,"-1\n");
}
if(y==1)
{
r=bs(a,z);
fprintf(out,"%d\n",r);
}
if(y==2)
{
r=bs(a,z-1);
fprintf(out,"%d",r+1);
}
}
return 0;
}