Pagini recente » Cod sursa (job #928475) | Cod sursa (job #922852) | Cod sursa (job #1505286) | Cod sursa (job #1367672) | Cod sursa (job #2539344)
#include <iostream>
#include <fstream>
int N;
int a[100001];
int M;
int mid, lb, ub, i;
void catareBinara(int x){
lb = 1;
ub = N;
while(lb <= ub){
mid = lb + (ub - lb) / 2;
if(a[mid] == x){
break;
}
if(a[mid] > x){
ub = mid - 1;
}
if(a[mid] < x){
lb = mid + 1;
}
}
}
using namespace std;
int main()
{
ifstream f1("cautbin.in");
ofstream f2("cautbin.out");
f1 >> N;
for(i = 1; i <= N; i++){
f1 >> a[i];
}
f1 >> M;
int optiune, x;
for(i = 1; i <= M; i++){
f1 >> optiune >> x;
if(optiune == 0){
catareBinara(x);
if(a[mid] == x){
while(a[mid + 1] == x){
mid++;
}
f2 << mid << endl;
}
else{
f2 << -1 << endl;
}
}
if(optiune == 1){
catareBinara(x);
if(a[mid] == x){
while(a[mid + 1] == x){
mid++;
}
}
else{
if(a[mid] > x){
mid--;
}
}
f2 << mid << endl;
}
if(optiune == 2){
catareBinara(x);
if(a[mid] == x){
while(a[mid - 1] == x){
mid--;
}
}
else{
if(a[mid] < x){
mid++;
}
}
f2 << mid << endl;
}
}
return 0;
}