Pagini recente » Cod sursa (job #1471125) | Cod sursa (job #418967) | Cod sursa (job #1295202) | Cod sursa (job #1657212) | Cod sursa (job #1133536)
#include <stdio.h>
#include <stdlib.h>
//method that returns the index of val. if the value val is not in the array, then this method return -1.
int binarySearch(int *v,int length,int val) {
int i,pas;
for(pas=1;pas<length;pas=pas<<1);
for(i=0;pas;pas=pas>>1) {
if(i+pas < length && v[i+pas] <= val)
i=i+pas;
}
if(v[i] == val)
return i;
return -1;
}
int binarySearch1(int *v,int length,int val) {
int i,pas,ok=0,j;
for(pas=1;pas<length;pas=pas<<1);
for(i=0;pas ;pas=pas>>1) {
j=i+pas;
if(j < length && v[j] <= val) {
i+=pas;
}
}
return j;
}
int v[100001];
int main() {
FILE *fin,*fout;
fin=fopen("cautbin.in","r");
fout=fopen("cautbin.out","w");
int index,select,i,N,M,option;
fscanf(fin,"%d",&N);
for(i=0;i<N;i++)
fscanf(fin,"%d",&v[i]);
fscanf(fin,"%d",&M);
for(i=0;i<M;i++) {
fscanf(fin,"%d%d",&option,&select);
if(option == 0) {
index = binarySearch(v,N,select);
fprintf(fout,"%d\n",index);
}
if(option == 1) {
index = binarySearch1(v,N,select);
fprintf(fout,"%d\n",index);
}
}
return 0;
}