Pagini recente » Cod sursa (job #1230385) | Cod sursa (job #1235966) | Cod sursa (job #2234751) | Cod sursa (job #1733238) | Cod sursa (job #807891)
Cod sursa(job #807891)
#include <fstream>
#include <vector>
#include <string>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n;
vector<int> v;
void read(){
in>>n;
int i,x;
for(i=1;i<=n;++i){
in>>x;
v.push_back(x);
}
}
int find(int x,int op){
int size=v.size();
int index,step;
for(step=1;step<size;step<<=1);
for(index=0;step;step>>=1){
if(index+step<size && v[index+step]<=x){
index+=step;
}
}
if(op==0){
if(v[index]==x)
return index+1;
return -1;
}
if(op==1){
return index+1;
}
for(index=0;step;step>>=1){
if(index+step<size && v[index+step]<x){
index+=step;
}
}
return index+2;
}
void ops(){
int nrop;
int op,operand;
in>>nrop;
while(nrop--){
in>>op>>operand;
out<<find(operand,op)<<" ";
switch(op){
case 0:
break;
case 1:
break;
case 2:
break;
}
}
}
int main(){
read();
ops();
return 0;
}