Pagini recente » Cod sursa (job #975238) | Cod sursa (job #1677858) | Cod sursa (job #1129972) | Cod sursa (job #2100160) | Cod sursa (job #741462)
Cod sursa(job #741462)
#include<stdio.h>
int op,nr,poz,n,V[100010],m;
FILE*f=fopen("cautbin.in","r");
FILE*g=fopen("cautbin.out","w");
int caut(int val){
int step,i;
for(step=1;step<n;step<<=1);
for(i=0;step;step>>=1)
if((i+step)<=n&&V[i+step]<=val)
i+=step;
return i;
}
void solve(){
fscanf(f,"%d",&n);
for(int i=1;i<=n;i++)
fscanf(f,"%d",&V[i]);
fscanf(f,"%d",&m);
for(int j=1;j<=m;j++){
fscanf(f,"%d%d",&op,&nr);
poz=caut(nr);
switch(op){
case 0:
if(V[poz]!=nr)
poz=-1;
fprintf(g,"%d\n",poz);
break;
case 1:
fprintf(g,"%d\n",poz);
break;
default:
if(V[poz]!=nr)
poz++;
else{
while(V[poz]==nr)
poz--;
poz++;
}
fprintf(g,"%d\n",poz);
break;
}
}
}
int main(){
solve();
return 0;
}