Pagini recente » Cod sursa (job #2131306) | Cod sursa (job #188230) | Cod sursa (job #2223348) | Cod sursa (job #131867) | Cod sursa (job #2850914)
#include <bits/stdc++.h>
using namespace std;
int a[100000];
ofstream fout("cautbin.out");
ifstream fin("cautbin.in");
void c1(int n,int x){
int st = 0;
int dr = n-1;
int poz = -1;
int mid = 0;
while(st <= dr){
mid = (st+dr)/2;
if(a[mid] == x){
poz = mid+1;
st = mid+1;
}else if(a[mid] > x){
dr = mid-1;
}else if(a[mid] < x){
st = mid+1;
}
}
fout << poz << '\n';
}
void c2(int n,int x){
int st = 0;
int dr = n-1;
int poz = -1;
int mid = 0;
while(st <= dr){
mid = (st+dr)/2;
if(a[mid] <= x){
poz = mid+1;
st = mid+1;
}else if(a[mid] > x){
dr = mid-1;
}
}
fout << poz << '\n';
}
void c3(int n,int x){
int st = 0;
int dr = n-1;
int poz = -1;
int mid = 0;
while(st <= dr){
mid = (st+dr)/2;
if(a[mid] >= x){
poz = mid+1;
dr = mid-1;
}else if(a[mid] < x){
st = mid+1;
}
}
fout << poz << '\n';
}
int main(void){
int n;
fin >> n;
for(int i =0;i<n;i++){
fin >> a[i];
}
int q,x,y;
fin >> q;
for(int i =0;i<q;i++){
fin >> x >> y;
if(x == 0){
c1(n,y);
}else if(x == 1){
c2(n,y);
}
else if(x == 2){
c3(n,y);
}
}
}