Pagini recente » Cod sursa (job #2688522) | Cod sursa (job #3200823) | Cod sursa (job #1287116) | Cod sursa (job #3002011) | Cod sursa (job #2967480)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int N = 100001;
int v[N];
void cb0(int v[N], int n, int x, int &poz)
{
int st = 1, dr = n, m;
while(st <= dr){
m = (st + dr) / 2;
if(v[m] == x){
poz = m;
st = m + 1;
}
else{
dr = m - 1;
}
}
}
void cb1(int v[N], int n, int x, int &poz)
{
int st = 1, dr = n, m;
while(st <= dr){
m = (st + dr) / 2;
if(v[m] <= x){
poz = m;
st = m + 1;
}
else{
dr = m - 1;
}
}
}
void cb2(int v[N], int n, int x, int &poz)
{
int st = 1, dr = n, m;
while(st <= dr){
m = (st + dr) / 2;
if(v[m] >= x){
poz = m;
st = m + 1;
}
else{
dr = m - 1;
}
}
}
int main(){
int n, m;
in >> n;
for(int i = 1; i <= n; i++){
in >> v[i];
}
in >> m;
int x, c /*cerinta*/, poz = -1;
for(int i = 1; i <= m; i++){
in >> c >> x;
}
if(c == 0){
cb0(v, n, x, poz);
out << poz << '\n';
}
if(c == 1){
cb1(v, n, x, poz);
out << poz << '\n';
}
if(c == 2){
cb2(v, n, x, poz);
out << poz << '\n';
}
return 0;
}