Pagini recente » Cod sursa (job #1126715) | Cod sursa (job #264259) | Cod sursa (job #1470865) | Cod sursa (job #1282347) | Cod sursa (job #1458684)
#include<iostream>
#include<fstream>
using namespace std;
int A[100000];
long N,M;
int cautarebinara0(int y){
long min=0,max=M-1,guess;
while(max>=min){
// cout<<min<<" "<<max<<endl;
guess=(min+max)/2;
if(A[guess]<y)min=guess+1;
else if (A[guess]>y) max=guess-1;
else {
while(A[guess+1]==y)//{
guess++;
//cout<<guess<<endl;}
return ++guess;
}
}
return -1;
}
int cautarebinara1(int y){
long min=0,max=M-1,guess;
while(max>=min){
// cout<<min<<" "<<max<<endl;
guess=(min+max)/2;
if(A[guess]<y)min=guess+1;
else if (A[guess]>y) max=guess-1;
else {
while(A[guess+1]==y)//{
guess++;
//cout<<guess<<endl;}
return ++guess;
}
}
return guess;
}
int cautarebinara2(int y){
long min=0,max=M-1,guess;
while(max>=min){
// cout<<min<<" "<<max<<endl;
guess=(min+max)/2;
if(A[guess]<y)min=guess+1;
else if (A[guess]>y) max=guess-1;
else {
while(A[guess-1]==y)//{
guess--;
//cout<<guess<<endl;}
return ++guess;
}
}
return guess;
}
int main(){
int x,y,rez;
ifstream f("cautbin.in");
ofstream g("cautarebin.out");
f>>N;
for (int i=0;i<N;i++){
f>>A[i];
}
f>>M;
for(int i=0;i<M;i++){
f>>x>>y;
//cout<<x<<" "<<y<<endl;
if(x==0) rez=cautarebinara0(y);
if(x==1) rez=cautarebinara1(y);
if(x==2) rez=cautarebinara2(y);
g<<rez<<endl;
}
f.close();
g.close();
return 0;
}