Pagini recente » Cod sursa (job #1072205) | Cod sursa (job #519694) | Cod sursa (job #1512678) | Cod sursa (job #2986253) | Cod sursa (job #2340934)
#include <stdio.h>
#include <stdlib.h>
int v[100001];
int n, m, i, a, b, st, dr, mij, rez;
int c1( int n, int b )
{
rez = -1;
st = 1;
dr = n;
while ( st < dr )
{
mij = ( st + dr ) / 2;
if ( v[mij] > b )
{
dr = mij;
}
else
{
st = mij + 1;
}
}
st--;
if ( v[st] == b )
{
return st;
}
return -1;
}
int c2( int n, int b )
{
rez = -1;
st = 1;
dr = n;
while ( st < dr )
{
mij = ( st + dr ) / 2;
if ( v[mij] > b )
{
dr = mij;
}
else
{
st = mij + 1;
}
}
return st - 1;
}
int c3( int n, int b )
{
rez = -1;
st = 1;
dr = n;
while ( st < dr )
{
mij = ( st + dr ) / 2;
if ( v[mij] >= b )
{
dr = mij;
}
else
{
st = mij + 1;
}
}
return st;
}
int main()
{
FILE *fin, *fout;
fin = fopen ( "cautbin.in", "r" );
fout = fopen ( "cautbin.out", "w" );
fscanf( fin, "%d", &n );
for ( i = 1; i <= n; i ++ )
fscanf( fin, "%d", &v[i] );
fscanf( fin, "%d", &m );
for ( i = 0; i < m; i ++ )
{
fscanf( fin, "%d%d", &a, &b );
if ( a == 0 )
{
rez = c1( n, b );
fprintf( fout, "%d\n", rez );
}
else if ( a == 1 )
{
rez = c2( n, b ) ;
fprintf( fout, "%d\n", rez );
}
else if ( a == 2 )
{
rez = c3( n, b );
fprintf( fout, "%d\n", rez );
}
}
fclose ( fin );
fclose ( fout );
return 0;
}