Pagini recente » Cod sursa (job #1624713) | Cod sursa (job #2538683) | Cod sursa (job #2978361) | Cod sursa (job #2663496) | Cod sursa (job #2620429)
#include <iostream>
#include <fstream>
int v[100001];
int f1(int val, int n) {
int pas = 1 << 16, s = 0;
while (pas != 0) {
if (pas + s <= n && v[pas + s] <= val ) {
s = pas + s;
}
pas = pas / 2;
}
if (v[s] == val) {
return s;
}
return -1;
}
int f2(int val, int n) {
int pas = 1 << 16, s = 0;
while (pas != 0) {
if (pas + s <= n && v[pas + s] <= val) {
s = pas + s;
}
pas = pas / 2;
}
return s;
}
int f3(int val, int n) {
int pas = 1 << 16, s = 0;
while (pas != 0) {
if (pas + s <= n && v[pas+s] < val){
s= s + pas;
}
pas = pas / 2;
}
return s+1;
}
int main()
{
std::ifstream in("cautbin.in");
std::ofstream out("cautbin.out");
int n, m, x, cerinta, val;
in >> n;
for (int i = 1; i <= n; i++) {
in >> x;
v[i]= x;
}
in >> m;
for (int i = 0; i < m; i++) {
in >> cerinta;
in >> val;
if (cerinta == 0) {
out << f1(val, n) << "\n";
}
else if (cerinta == 1) {
out << f2(val, n) << "\n";
}
else if (cerinta == 2) {
out << f3(val, n) << "\n";
}
}
return 0;
}