Pagini recente » Cod sursa (job #120114) | Cod sursa (job #657170) | Cod sursa (job #2384367) | Cod sursa (job #1035616) | Cod sursa (job #206117)
Cod sursa(job #206117)
#include<stdio.h>
int N,M,a[100010];
FILE *fin=fopen("cautbin.in","r"),
*fout=fopen("cautbin.out","w");
void rezolvare_0(int nr){
int li=1,lf=N;
while(lf-li>1){
int mij=(li+lf)>>1;
if(a[mij]<=nr)
li=mij;
else
lf=mij;
}
if(a[lf]==nr)
fprintf(fout,"%d\n",lf);
else
if(a[li]==nr)
fprintf(fout,"%d\n",li);
else
fprintf(fout,"-1\n");
}
void rezolvare_2(int nr){
int li=1,lf=N;
while(lf-li>1){
int mij=(li+lf)>>1;
if(a[mij]<=nr)
li=mij;
else
lf=mij;
}
// fprintf(fout,"%d %d ",li,lf);
if(a[li]>=nr)
fprintf(fout,"%d\n",li);
else
fprintf(fout,"%d\n",lf);
}
void rezolvare_1(int nr){
int li=1,lf=N;
while(lf-li>1){
int mij=(li+lf)>>1;
if(a[mij]<nr)
li=mij;
else
lf=mij;
}
// fprintf(fout,"%d %d ",li,lf);
if(a[lf]<=nr)
fprintf(fout,"%d\n",lf);
else
fprintf(fout,"%d\n",li);
}
int main(){
fscanf(fin,"%d",&N);
for(int i=1;i<=N;i++)
fscanf(fin,"%d",&a[i]);
fscanf(fin,"%d",&M);
for(int i=1;i<=M;i++){
int x,nr;
fscanf(fin,"%d%d",&x,&nr);
if(x==0) rezolvare_0(nr);
else
if(x==2) rezolvare_2(nr);
else
rezolvare_1(nr);
}
}