Pagini recente » Cod sursa (job #1421860) | Cod sursa (job #3145762) | Cod sursa (job #2748399) | Cod sursa (job #2530103) | Cod sursa (job #2710647)
#include <fstream>
std::ifstream fin("cautbin.in");
std::ofstream fout("cautbin.out");
int n, m, v[100005], tip, nr;
int cautareTip0(int x) {
int ind = 0;
int st = 1, dr = n;
while(st <= dr) {
ind = (st + dr) / 2;
if(v[ind] <= x) {
st = ind + 1;
} else {
dr = ind - 1;
}
}
ind = (st + dr) / 2;
if(v[ind] > x) {
ind--;
}
if(v[ind] == x) {
return ind;
}
return -1;
}
int cautareTip1(int x) {
int ind = 0, st = 1, dr = n;
while(st < dr) {
ind = (st + dr) / 2;
if(v[ind] <= x) {
st = ind + 1;
} else {
dr = ind;
}
}
ind = (st + dr) / 2;
if(v[ind] > x) {
ind--;
}
return ind;
}
int cautareTip2(int x) {
int ind = 0, st = 1, dr = n;
while(st < dr) {
ind = (st + dr) / 2;
if(v[ind] < x) {
st = ind + 1;
} else {
dr = ind;
}
}
ind = (st + dr) / 2;
if(v[ind] < x) {
ind++;
}
return ind;
}
int main() {
fin >> n;
for(int i = 1; i <= n; i++) {
fin >> v[i];
}
fin >> m;
for(int i = 1; i <= m; i++) {
fin >> tip >> nr;
if(tip == 0) {
fout << cautareTip0(nr) << "\n";
} else if(tip == 1) {
fout << cautareTip1(nr) << "\n";
} else {
fout << cautareTip2(nr) << "\n";
}
}
fin.close();
fout.close();
return 0;
}