Pagini recente » Cod sursa (job #1819362) | Cod sursa (job #94901) | Cod sursa (job #34550) | Cod sursa (job #1181450) | Cod sursa (job #1631108)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001],n,m;
int zero(int x)
{
int m, st=1, dr=n, ok=0;
while( st<=dr)
{
m=( st+dr)/2;
if( x==v[m])
{
ok=1;
if( st==dr)
return st;
else
st=m+1;
}
else if( x>v[m])
st=m+1;
else
dr=m-1;
}
if( ok)
return st-1;
else
return -1;
}
int unu( int x)
{
int m,st=1,dr=n,ok=0;
while(st<=dr)
{
m=(st+dr)/2;
if(x==v[m])
{
ok=1;
if(st==dr)
return st;
else
st=m+1;
}
else if(x>v[m])
st=m+1;
else
dr=m-1;
}
return st-1;
}
int doi( int x)
{
int m,st=1,dr=n,ok=0;
while(st<=dr)
{
m=(st+dr)/2;
if(x==v[m])
{
ok=1;
if(st==dr)
return st;
else
dr=m-1;
}
else if(x>v[m])
st=m+1;
else
dr=m-1;
}
return dr+1;
}
int main()
{
int i, w, x;
in>>n;
for( i=1; i<=n; i++)
in>>v[i];
in>>m;
while( m)
{
in>>w>>x;
if( w==0)
out<<zero( x)<<'\n';
if( w==1)
out<<unu( x)<<'\n';
if( w==2)
out<<doi( x)<<'\n';
m--;
}
return 0;
}