Pagini recente » Cod sursa (job #1842887) | Cod sursa (job #2484524) | Cod sursa (job #1249321) | Cod sursa (job #2857688) | Cod sursa (job #2457358)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 100000
int v[NMAX];
int main()
{
FILE *fin,*fout;
fin=fopen("cautbin.in","r");
fout=fopen("cautbin.out","w");
int st,dr,n,x,m,p,mij=0,i,j;
fscanf(fin,"%d",&n); ///nr de elemente din vector
for(i=1;i<=n;i++){
fscanf(fin,"%d",&v[i]); ///sirul de nr
}
fscanf(fin,"%d",&m); ///nr de intrebari
for(i=0;i<m;i++){
fscanf(fin,"%d%d",&p,&x); ///tipul de intrebare si x ul
st=0;
dr=n-1;
while(st<dr){
mij=(st+dr)/2+1;
if(x>=v[mij]){
st=mij;
}
else{
dr=mij+1;
}
}
if(p==0){
if(x==v[st]){
fprintf(fout,"%d\n",st);
}
else{
fprintf(fout,"-1\n");
}
}
else if(p==1){
if(x==v[st]){
fprintf(fout,"%d\n",st);
}
else{
for(j=n;j>0;j++){
if(v[j]<x){
fprintf(fout,"%d\n",j);
j=0;
}
}
}
}
else if(p==2){
for(j=0;j<n;j++){
if(v[j]==x){
fprintf(fout,"%d\n",j);
j=n;
}
else if(v[j]>x){
fprintf(fout,"%d\n",j);
j=n;
}
}
}
}
fclose(fin);
fclose(fout);
return 0;
}