Pagini recente » Cod sursa (job #733688) | Cod sursa (job #1832762) | Cod sursa (job #1273382) | Cod sursa (job #840561) | Cod sursa (job #3267825)
#include <fstream>
using namespace std;
#define Nmax 100000
int v[Nmax];
int main()
{
ifstream fin ( "cautbin.in" );
ofstream fout ( "cautbin.out" );
int n, m, i, x, first, last, mid;
char operatie;
fin >> n;
for ( i = 0; i < n; i ++ )
fin >> v[i];
fin >> m;
for ( i = 0; i < m; i ++ ) {
fin >> operatie >> x;
if ( operatie - '0' == 0 ) {
first = 0;
last = n;
while ( (last - first) > 1 ) {
mid = (first + last) / 2;
if ( v[mid] > x )
last = mid;
else
first = mid;
}
if ( v[first] == x )
fout << first + 1 << "\n";
else
fout << -1 << "\n";
} else if ( operatie - '0' == 1 ) {
first = 0;
last = n;
while ( last - first > 1 ) {
mid = ( first + last ) / 2;
if ( v[mid] > x )
last = mid;
else
first = mid;
}
fout << first + 1 << "\n";
} else {
first = -1;
last = n -1;
while ( last - first > 1 ) {
mid = (first + last ) / 2;
if ( v[mid] < x )
first = mid;
else
last = mid;
}
fout << last + 1 << "\n";
}
}
fin.close();
fout.close();
return 0;
}