Pagini recente » Cod sursa (job #1479411) | Cod sursa (job #2381122) | Cod sursa (job #149677) | Cod sursa (job #613781) | Cod sursa (job #3207109)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, v[100005], m;
bool check0(int ind, int val){
return v[ind]<=val;
}
bool check1(int ind, int val){
return v[ind]<=val;
}
bool check2(int ind, int val){
return v[ind]<val;
}
bool check(int type, int ind, int val){
switch(type){
case 0:
return check0(ind, val);
case 1:
return check1(ind, val);
case 2:
return check2(ind, val);
}
}
int cautbin(int type, int val){
int pas = 1<<16, sol=0;
while(pas){
if(check(type, sol+pas, val) && sol+pas<=n && sol+pas>=1){
sol+=pas;
}
pas>>=1;
}
if(v[sol] != val && type == 1){
return -1;
}
if(type==2){
return sol+1;
}
return sol;
}
int main(){
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
}
fin>>m;
cout<<m;
for(int i=1;i<=m;i++){
int type, val;
fin>>type>>val;
cout<<"*";
fout<<cautbin(type, val)<<"\n";
}
return 0;
}