Pagini recente » Cod sursa (job #401624) | Cod sursa (job #33005) | Cod sursa (job #1040207) | Cod sursa (job #1425545) | Cod sursa (job #212620)
Cod sursa(job #212620)
#include <fstream>
using namespace std;
int n,m,sir[100010];
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
void r_0(int nr){
int st=1,dr=n;
while(dr-st>1)
{
int mij=(st+dr)>>1;
if(sir[mij]<=nr)
st=mij;
else
dr=mij;
}
if(sir[dr]==nr)
fout<<dr;
else
if(sir[st]==nr)
fout<<st;
else
fout<<"-1";
}
void r_1(int nr)
{
int st=1,dr=n;
while(dr-st>1)
{
int mij=(st+dr)>>1;
if(sir[mij]<=nr)
st=mij;
else
dr=mij;
}
if(sir[dr] <= nr)
fout<<dr;
else
fout<<st;
}
void r_2(int nr){
int st=1,dr=n;
while(dr-st>1)
{
int mij=(st+dr)>>1;
if(sir[mij]<nr)
st=mij;
else
dr=mij;
}
if(sir[st] >= nr)
fout<<st;
else
fout<<dr;
}
void afish()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>sir[i];
fin>>m;
for(int i=1;i<=m;i++){
int x,nr;
fin>>x>>nr;
if(x==0)
r_0(nr);
else
if(x==1)
r_1(nr);
else
r_2(nr);
fout<<"\n";
}
}
int main()
{
afish();
return 0;
}