Pagini recente » Cod sursa (job #930814) | Cod sursa (job #1657674) | Cod sursa (job #537950) | Cod sursa (job #1071468) | Cod sursa (job #2427846)
#include<fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100000];
int main ()
{
int n,m,i,x,y,msk,pos=0;
in>>n;
for(i=1; i<=n; i++)
in>>v[i];
in>>m;
while(m!=0)
{
in>>y;
if(y==0)
{
in>>x;
pos=0;
for(msk=1<<20; msk>0; msk/=2)
{
if(pos+msk<=n && v[pos+msk]<=x)
pos+=msk;
}
if(v[pos]==x)
out<<pos<<'\n';
else
out<<-1<<'\n';
}
if(y==1)
{
in>>x;
pos=0;
for(int msk=1<<20; msk>0; msk/=2)
{
if(pos+msk<=n && v[pos+msk]<=x)
pos+=msk;
}
while(v[pos]<=x)
pos++;
pos--;
out<<pos<<'\n';
}
if(y==2)
{
in>>x;
pos=0;
for(msk=1<<20; msk>0; msk/=2)
{
if(pos+msk<=n && v[pos+msk]<=x)
pos+=msk;
}
while(v[pos]>=x)
pos--;
pos++;
out<<pos<<'\n';
}
m--;
}
return 0;
}