Pagini recente » Cod sursa (job #2529604) | Cod sursa (job #1217978) | Cod sursa (job #2478798) | Cod sursa (job #314360) | Cod sursa (job #1368006)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
const int NMax = 100005;
int v[NMax];
int n;
int cbin0(int val){
int lo = 1;
int hi = n;
int pos = 1e9;
while(lo <= hi){
int mid = (lo + hi) / 2;
if(v[mid] == val){
pos = mid;
}
if(v[mid] <= val){
lo = mid + 1;
} else {
hi = mid - 1;
}
}
if(pos != 1e9){
return pos;
} else {
return -1;
}
}
int cbin1(int val){
int lo = 1;
int hi = n;
int pos;
while(lo <= hi){
int mid = (lo + hi) / 2;
if(v[mid] <= val){
pos = mid;
}
if(v[mid] <= val){
lo = mid + 1;
} else {
hi = mid - 1;
}
}
return pos;
}
int cbin2(int val){
int lo = 1;
int hi = n;
int pos;
while(lo <= hi){
int mid = (lo + hi) / 2;
if(v[mid] >= val){
pos = mid;
}
if(v[mid] < val){
lo = mid + 1;
} else {
hi = mid - 1;
}
}
return pos;
}
int main()
{
int m;
f >> n;
for(int i = 1; i <= n; i++){
f >> v[i];
}
f >> m;
int p,val;
for(int i = 1; i <= m; i++){
f >> p >> val;
if(p == 0){
g << cbin0(val) << "\n";
}
if(p == 1){
g << cbin1(val) << "\n";
}
if(p == 2){
g << cbin2(val) << "\n";
}
}
return 0;
}