Pagini recente » Cod sursa (job #2914252) | Cod sursa (job #2069472) | Cod sursa (job #1920920) | Cod sursa (job #576500) | Cod sursa (job #432540)
Cod sursa(job #432540)
#include<iostream.h>
#include<fstream.h>
int n,m;
int v[100000];
int caut_bin0( int value)
{
int st = 1, dr = n;
while ( st != dr)
{
int mij = ((long long) st + dr) /2;
if( v[ mij ] > value)
{
dr = mij;
}
else st = mij + 1;
}
if( v[ st ] == value) return st;
if( v[ st - 1] == value) return st-1;
return -1;
}
int caut_bin1( int value)
{
int st = 1, dr = n;
while (st != dr )
{
int mij = ((long long)st +dr ) / 2;
if (v[ mij ] > value)
dr = mij;
else st = mij+1;
}
if ( v[ st ] <= value) return st;
if ( v[ st - 1 ] <= value) return st-1;
}
int caut_bin2( int value)
{
int st=1, dr = n;
while (st != dr )
{
int mij = ((long long )st + dr) / 2;
if (v[ mij ] >= value)
dr = mij;
else st = mij + 1;
}
return st;
}
int main()
{ int i;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(i = 1; i <= n; i++)
scanf("%d",&v[i]);
scanf("%d",&m);
for(int j = 1; j <= m; j++)
{
int type, value;
scanf("%d%d",&type,&value);
if( type == 0)
cout<< caut_bin0( value)<<endl;
if( type == 1)
cout<< caut_bin1( value)<<endl;
if( type == 2)
cout<< caut_bin2( value)<<endl;
}
// f.close();
return 0;
}