Pagini recente » Cod sursa (job #2933142) | Cod sursa (job #552675) | Cod sursa (job #2891545) | Cod sursa (job #351300) | Cod sursa (job #2155464)
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream o("cautbin.out");
int N, A[100001], M, K, L;
void citire(){
f>>N;
for(int i=0;i<N;i++){
f>>A[i];
}
f>>M;
}
int solve0(int x){
int ls=0, ld=N, n;
while(ls<ld){
n=(int)(ls+ld)/2;
if(A[n]==x){
while(n<N && A[n]==x){
n++;
}
o<<n<<" ";
return 0;
} else {
if(x<A[n]){
ld=n-1;
} else {
ls=n+1;
}
}
}
o<<-1<<" ";
}
int solve1(int x){
int ls=0, ld=N, n;
while(ls<ld){
n=(int)(ls+ld)/2;
if(A[n]==x){
if(A[n+1]==x){
while(n<N && A[n]==x){
n++;
}
o<<n--<<" ";
break;
} else {
o<<n-1;
break;
}
} else {
if(x<A[n]){
ld=n-1;
} else {
ls=n+1;
}
}
}
}
int solve2(int x){
int ls=0, ld=N, n;
while(ls<ld){
n=(int)(ls+ld)/2;
if(A[n]==x){
if(A[n-1]==x){
while(n>=0 && A[n]==x){
n--;
}
o<<n+2<<" ";
return 0;
} else {
o<<n+1;
return 0;
}
} else {
if(x<A[n]){
ld=n-1;
} else {
ls=n+1;
}
}
}
}
void rezolvare(){
for(int i=0;i<M;i++){
f>>K>>L;
if(K==0){
solve0(L);
} else {
if(K==1){
solve1(L);
} else {
solve2(L);
}
}
}
}
int main(){
citire();
rezolvare();
}