Pagini recente » Cod sursa (job #2554682) | Cod sursa (job #2926973) | Cod sursa (job #934088) | Cod sursa (job #1319108) | Cod sursa (job #2620410)
#include <iostream>
#include <fstream>
int v[100001];
using namespace std;
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()
{
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n, m, x, cerinta, val;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> x;
v[i]= x;
}
cin >> m;
for (int i = 0; i < m; i++) {
cin >> cerinta;
cin >> val;
if (cerinta == 0) {
cout << f1(val, n);
}
else if (cerinta == 1) {
cout << f2(val, n);
}
else if (cerinta == 2) {
cout << f3(val, n);
}
}
in.close();
out.close();
return 0;
}