Pagini recente » Cod sursa (job #2756508) | Cod sursa (job #1441907) | Cod sursa (job #1101562) | Cod sursa (job #1578726) | Cod sursa (job #281169)
Cod sursa(job #281169)
//#include<iostream>
#include<fstream>
#include<vector>
#include<complex>
using namespace std;
int main() {
ifstream fin; fin.open("cautbin.in");
ofstream fout; fout.open("cautbin.out");
int n,m,logN,poz,x;
fin>>n;
//cout<<"n : "<<n<<'\n';
logN = (int)(log(n-1)/log(2));
//cout<<"logN : "<<logN<<'\n';
vector<int> V(n,0);
while(n--)
fin>>V[V.size()-n-1];
fin>>m;
//cout<<"m : "<<m<<'\n';
while(m--) {
fin>>x;
fin>>n;
//cout<<"\n\n"<<x<<" "<<n<<'\n';
if(x<2) {
poz = 0;
for(int p = 1<<logN; p; p>>=1) {
if(poz+p<V.size() && V[poz+p]<=n)
poz+=p;
//cout<<"poz: "<<poz<<'\n';
}
if(!x && V[poz]!=n)
fout<<"-1\n";
else
fout<<poz+1<<'\n';
} else {
poz = V.size()-1;
for(int p = 1<<logN; p; p>>=1) {
if(poz-p>=0 && V[poz-p]>=n)
poz-=p;
//cout<<"poz: "<<poz<<'\n';
}
fout<<poz+1<<'\n';
}
}
fin.close();
fout.close();
return 0;
}