Pagini recente » Cod sursa (job #226414) | Cod sursa (job #118861) | Cod sursa (job #123475) | Cod sursa (job #1592071) | Cod sursa (job #1161845)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int main()
{
int n,m,i,j,p=1,tip,val;
vector<int> v;
in>>n;
v.resize(n);
while(p<n) p<<=1;
for(i=0;i<n;i++) in>>v.at(i);
in>>m;
while(m--)
{
in>>tip>>val;
j=p;
i=0;
while(j)
{
if(i+j<n&&v.at(i+j)<=val) i+=j;
j>>=1;
}
if(tip==0)
{
if(v.at(i)==val) out<<i+1<<'\n';
else out<<"-1\n";
}
if(tip==1) out<<i+1<<'\n';
if(tip==2)
{
if(v.at(i)==val) while(i>1&&v.at(i-1)==val) i--;
if(v.at(i)<val) i++;
out<<i+1<<'\n';
}
}
}