Pagini recente » Cod sursa (job #2141031) | Cod sursa (job #1446067) | Cod sursa (job #1123706) | Cod sursa (job #3145656) | Cod sursa (job #1121154)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int i,n,m,a[100001],x,y;
void cb(int aa)
{
int in=1,sf=n,ok=0,mj;
while(in<=sf)
{
mj=(in+sf)/2;
if(a[mj]==aa)
{
ok=1;
break;
}
if(a[mj]>aa)
sf=mj-1;
if(a[mj]<aa)
in=mj+1;
}
if(ok==0)
fout<<"-1"<<'\n';
else
{
int i=mj+1;
while(a[i]==aa && i<=n)
i++;
fout<<i-1<<'\n';
}
}
void cbb(int aa)
{
int in=1,sf=n,ok=0,mj;
while(in<=sf)
{
mj=(in+sf)/2;
if(a[mj]==aa)
{
ok=1;
break;
}
if(a[mj]>aa)
sf=mj-1;
if(a[mj]<aa)
in=mj+1;
}
aa=a[sf];
int i=sf+1;
if(ok==1)
{
aa=a[mj];
i=mj+1;
}
while(a[i]==aa && i<=n)
i++;
fout<<i-1<<'\n';
}
void cbbb(int aa)
{
int i=0,in=1,sf=n,ok=0,mj;
while(in<=sf)
{
mj=(in+sf)/2;
if(a[mj]==aa)
{
ok=1;
break;
}
if(a[mj]>aa)
sf=mj-1;
if(a[mj]<aa)
in=mj+1;
}
aa=a[in];
i=in-1;
if(ok==1)
{
aa=a[mj];
i=mj-1;
}
while(a[i]==aa && i>=1)
i--;
fout<<i+1<<'\n';
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
fin>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y;
if(x==0)
cb(y);
else
if(x==1)
cbb(y);
else
cbbb(y);
}
return 0;
}