Pagini recente » Cod sursa (job #1594431) | Cod sursa (job #498007) | Cod sursa (job #1341267) | Cod sursa (job #2432503) | Cod sursa (job #1482499)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
#define MAXN 100005
int V[MAXN], n, MAX;
int rez_1(int val) {
int ind = 0;
for(int i=MAX; i; i>>=1) {
if(i+ind <= n && V[i+ind] <= val)
ind += i;
}
return ind;
}
int rez_0(int val) {
int ind = rez_1(val);
return (V[ind] == val) ? ind : -1;
}
int rez_2(int val) {
int ind = rez_1(val-1);
return ind+1;
}
int main() {
int m, type, val;
fin>>n;
for(int i=1; i<=n; i++)
fin>>V[i];
for(MAX=1; MAX<=n; MAX<<=1);
MAX>>=1;
fin>>m;
while(m--) {
fin>>type>>val;
switch(type) {
case 0: fout<<rez_0(val)<<'\n';break;
case 1: fout<<rez_1(val)<<'\n';break;
case 2: fout<<rez_2(val)<<'\n';break;
}
}
return 0;
}