Pagini recente » Cod sursa (job #651496) | Cod sursa (job #1809653) | Cod sursa (job #1933496) | Cod sursa (job #1125996) | Cod sursa (job #1769704)
#include<cstdio>
using namespace std;
int a[100001],n;
int c0(int x)
{
int li=1,lf=n,m;
while(li<=lf)
{
m=(li+lf)/2;
if(x<a[m])lf=m-1;
else li=m+1;
}
if(li<1||a[li-1]!=x)return -1;
return li-1;
}
int c1(int x)
{
int li=1,lf=n,m;
while(li<=lf)
{
m=(li+lf)/2;
if(x>=a[m])li=m+1;
else lf=m-1;
}
return li-1;
}
int c2(int x)
{
int li=1,lf=n,m;
while(li<=lf)
{
m=(li+lf)/2;
if(x<=a[m])lf=m-1;
else li=m+1;
}
return lf+1;
}
int main()
{
FILE *f=fopen("cautbin.in","r"),*g=fopen("cautbin.out","w");
int i,op,x,m;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)fscanf(f,"%d",&a[i]);
fscanf(f,"%d",&m);
for(i=1;i<=m;i++)
{
fscanf(f,"%d%d",&op,&x);
if(op==0)fprintf(g,"%d\n",c0(x));
if(op==1)fprintf(g,"%d\n",c1(x));
if(op==2)fprintf(g,"%d\n",c2(x));
}
return 0;
}