Pagini recente » Cod sursa (job #1864239) | Cod sursa (job #163692) | Cod sursa (job #1697175) | Cod sursa (job #994912) | Cod sursa (job #1893391)
#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 = -1, 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 = -1, 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 = -1, 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 = 0;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) + 1 << "\n";
break;
case 1:
g << caut1(x) + 1 << "\n";
break;
case 2:
g << caut2(x) + 1 << "\n";
break;
}
}
f.close();
g.close();
return 0;
}