Pagini recente » Cod sursa (job #81926) | Cod sursa (job #954073) | Cod sursa (job #257960) | Cod sursa (job #1390520) | Cod sursa (job #3260772)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001];
int bin0(int n, int val){
int p, i=1;
for(p=1; p < n; p*=2);
p/=2;
while(p>0){
if(i+p <= n && v[i+p] <= val){
i+=p;
}
p/=2;
}
if(v[i]==val){
return i;
}
else{
return -1;
}
}
int bin1(int n, int val){
int p, i=1;
for(p=1; p < n; p*=2);
p/=2;
while(p>0){
if(i+p <= n && v[i+p] <= val){
i+=p;
}
p/=2;
}
return i;
}
int bin2(int n, int val){
int p, i=1;
for(p=1; p <= n; p*=2);
p/=2;
while(p>0){
if(i+p <= n && v[i+p] < val){
i+=p;
}
p/=2;
}
return i+1;
}
int main() {
int n, M, x, cer;
f>>n;
for (int i =1; i<=n; i++){
f>>v[i];
}
f>>M;
for(int i=1; i<=M; i++){
f>>cer>>x;
if(cer==0){
g<<bin0(n, x);
}
if(cer==1){
g<<bin1(n, x);
}
if(cer==2){
g<<bin2(n, x);
}
g<<"\n";
}
return 0;
}