Pagini recente » Cod sursa (job #1283219) | Cod sursa (job #139992) | Cod sursa (job #91083) | Cod sursa (job #798645) | Cod sursa (job #256757)
Cod sursa(job #256757)
# include <stdio.h>
long i,n,p,u,m,x,M,tip,j,pmax;
int v[100002];
int main() {
FILE *f = fopen("cautbin.in","r");
FILE *g = fopen("cautbin.out","w");
fscanf(f,"%ld",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
fscanf(f,"%ld",&M);
for (i=1;i<=M;i++) {
fscanf(f,"%ld",&tip);
fscanf(f,"%ld",&x);
if (tip==0) {
p=1;
u=n;
pmax = -1;
while (p<=u) {
m=p+(u-p)/2;
if (x==v[m])
if (m>pmax)
pmax=m;
if (x>v[m])
p=m+1;
else
u=m-1;
}
fprintf(g,"%ld\n",pmax);
}
if (tip==1) {
p=1;
u=n;
while (p<=u) {
m=p+(u-p)/2;
if (x==v[m])
break;
else
if (x>v[m]) {
p = m+1;
} else
u = m-1;
}
if (p<=u)
fprintf(g,"%ld\n",m);
else
fprintf(g,"%ld\n",u);
}
if (tip==2) {
p=1;
u=n;
while (p<=u) {
m=p+(u-p)/2;
if (x==v[m])
break;
if (x>v[m])
p=m+1;
else
u=m-1;
}
if (p<=u)
fprintf(g,"%ld\n",m);
else
fprintf(g,"%ld\n",p);
}
}
fclose(f);
fclose(g);
return 0;
}