Pagini recente » Cod sursa (job #2913017) | Cod sursa (job #536763) | Cod sursa (job #2524440) | Cod sursa (job #2452559) | Cod sursa (job #465236)
Cod sursa(job #465236)
#include <stdio.h>
#define maxn 100001
using namespace std;
int v[maxn],n;
int eg_mare(int x,int k)
{int j;
for(j=0;k;k>>=1)
if(j+k<=n && v[j+k]<=x) j+=k;
return j;
}
int mic(int x,int k)
{int j;
for(j=n;k;k>>=1)
if(j-k>0 && v[j-k]>=x) j-=k;
return j;
}
int main(void)
{FILE *fin=fopen("cautbin.in","r");
FILE *fout=fopen("cautbin.out","w");
int i,o,x,m,k;
fscanf(fin,"%d",&n);
for(i=1;i<=n;i++) fscanf(fin,"%d",v+i);
for(k=1;k<=n;k<<=1);
fscanf(fin,"%d",&m);
for(;m;m--)
{fscanf(fin,"%d%d",&o,&x);
switch (o)
{ case 0:
{i=eg_mare(x,k);
if(v[i]!=x) fprintf(fout,"-1\n");
else fprintf(fout,"%d\n",i);
} break;
case 1:fprintf(fout,"%d\n",eg_mare(x,k)); break;
case 2:fprintf(fout,"%d\n",mic(x,k)); break;
}
}
fclose(fin); fclose(fout);
return 0;
}