Pagini recente » Cod sursa (job #2186872) | Cod sursa (job #46554) | Cod sursa (job #1243589) | Cod sursa (job #2234353) | Cod sursa (job #1567935)
#include <iostream>
#include <fstream>
using namespace std;
long long x[100001];
int cautare_binara (long long x[], int nrDeCautat, int n){
int st=1; int dr=n; int mijloc=0; int exista=0;
while(st<dr && exista!=1){
mijloc=(dr+st)/2;
if(nrDeCautat==x[mijloc]){
return mijloc;
exista=1;
}
if(nrDeCautat>x[mijloc])
st=mijloc+1;
if(nrDeCautat<x[mijloc])
dr=mijloc-1;
}
if(exista!=1)
return -1;
}
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int rezultat,t,q,i,type,mijloc,st,dr,exista=0,n,nrDeCautat,raspuns;
fin>>n;
for(i=1;i<=n;i++)
fin>>x[i];
fin>>t;
for(q=1;q<=t;q++){
fin>>type;
if(type==0){
fin>>nrDeCautat;
rezultat=cautare_binara(x,nrDeCautat,n);
if(rezultat==-1)
cout<<-1;
else{
for(i=rezultat;i<=n;i++){
if(x[i]==x[rezultat])
rezultat++;
else break;
}
fout<<rezultat<<endl;
}
}
if(type==1){
fin>>nrDeCautat;
}
if(type==2){
fin>>nrDeCautat;
}
}
return 0;
}