Pagini recente » Cod sursa (job #2628622) | Cod sursa (job #3172929) | Cod sursa (job #2522130) | Cod sursa (job #1555274) | Cod sursa (job #1893393)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
#define MAX 100000
#define LG 1 << 17
int v[MAX];
int N, M;
inline int caut0(int val) {
int r = 0, pas = LG;
while(pas) {
if(r + pas <= N && v[r + pas] <= val) {
r += pas;
}
pas >>= 1;
}
if(v[r + pas] == val)
return r;
return -1;
}
inline int caut1(int val) {
int r = 0, pas = LG;
while(pas) {
if(r + pas <= N && v[r + pas] <= val) {
r += pas;
}
pas >>= 1;
}
return r;
}
inline int caut2(int val) {
int r = 0, pas = LG;
while(pas) {
if(r + pas <= N && v[r + pas] < val)
r += pas;
pas >>= 1;
}
return r + 1;
}
int main() {
f >> N;
for(int i = 1;i <= N;i++)
f >> v[i];
f >> M;
for(int i = 0;i < M;i++) {
int op, x;
f >> op >> x;
switch(op) {
case 0:
g << caut0(x) << "\n";
break;
case 1:
g << caut1(x) << "\n";
break;
case 2:
g << caut2(x) << "\n";
break;
}
}
f.close();
g.close();
return 0;
}