Pagini recente » Cod sursa (job #844436) | Cod sursa (job #1764615) | Cod sursa (job #3138295) | Cod sursa (job #1792460) | Cod sursa (job #2253205)
#include <fstream>
using namespace std;
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
long long n,i,v[100001],m,c,x;
int ex0(){
int st=0,dr=n-1;
int mij=(st+dr)/2;
while(st<=dr){
mij=(st+dr)/2;
if(v[mij]==x){
while(v[mij]==x) mij++;
mij--;
return mij;
}
else if(v[mij]<x) st=mij+1;
else dr=mij-1;
}
return -2;
}
int ex1(){
int st=0,dr=n-1;
int mij=(st+dr)/2;
while(st<=dr){
mij=(st+dr)/2;
if(v[mij]==x){
while(v[mij]==x) ++mij;
--mij;
return mij;
}
else if(v[mij]<x) st=mij+1;
else dr=mij-1;
}
while(v[mij]>x) --mij;
return mij;
}
int ex2(){
int st=0,dr=n-1;
int mij=(st+dr)/2;
while(st<=dr){
mij=(st+dr)/2;
if(v[mij]==x){
while(v[mij]==x) --mij;
++mij;
return mij;
}
else if(v[mij]<x) st=mij+1;
else dr=mij-1;
}
while(v[mij]<x) ++mij;
return mij;
}
int main()
{
fin>>n;
for(i=0;i<n;++i) fin>>v[i];
fin>>m;
for(i=0;i<m;++i){
fin>>c>>x;
long long rasp;
if(c==0) rasp=ex0();
else if(c==1) rasp=ex1();
else rasp=ex2();
fout<<rasp+1<<'\n';
}
return 0;
}