Pagini recente » Cod sursa (job #3142889) | Cod sursa (job #2624916) | Cod sursa (job #1780793) | Cod sursa (job #2967295) | Cod sursa (job #2346965)
#include <stdio.h>
#include <stdlib.h>
int n;
int v[100000];
const int L=16;
int count0(int x){
int r=0,pas=1<<L;
while(pas!=0){
if(r+pas<=n && v[r+pas]<=x){
r+=pas;
}
pas/=2;
}
if(v[r]!=x){
r=-1;
}
return r;
}
int count1(int x){
int r=0,pas=1<<L;
while(pas!=0){
if(r+pas<=n && v[r+pas]<=x){
r+=pas;
}
pas/=2;
}
if(v[r]>x){
r=-1;
}
return r;
}
int count2(int x){
int r=0,pas=1<<L;
while(pas!=0){
if(r+pas<=n && v[r+pas]<x){
r+=pas;
}
pas/=2;
}
r++;
return r;
}
int main(){
int m,i,x,y;
FILE *fin,*fout;
fin=fopen("cautbin.in","r");
fout=fopen("cautbin.out","w");
fscanf(fin,"%d",&n);
for(i=1;i<=n;i++){
fscanf(fin,"%d",&v[i]);
}
fscanf(fin,"%d",&m);
for(i=0;i<m;i++){
fscanf(fin,"%d%d",&y,&x);
if(y==0){
fprintf(fout,"%d\n",count0(x));
}else{
if(y==1){
fprintf(fout,"%d\n",count1(x));
}else{
fprintf(fout,"%d\n",count2(x));
}
}
}
fclose(fin);
fclose(fout);
return 0;
}