Pagini recente » Cod sursa (job #2069611) | Cod sursa (job #2409018) | Cod sursa (job #3214816) | Cod sursa (job #1267823) | Cod sursa (job #1458695)
#include<iostream>
#include<fstream>
using namespace std;
int A[100000];
long N,M;
int cautarebinara0(int y){
//cout<<N<<" "<<M<<endl;
long min=0,max=N-1;
int 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=N-1;
int 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=N-1;
int 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("cautbin.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;
}