Pagini recente » Cod sursa (job #47668) | Cod sursa (job #313339) | Cod sursa (job #2895140) | Cod sursa (job #1659416) | Cod sursa (job #1125462)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
long int cbin ( long int st, long int dr, vector<long int> &v, long int c )
{
if ( st <= dr )
{
long int mid = st + ( dr - st ) / 2;
if ( v [ mid ] == c )
return mid;
if ( v [ mid ] < c )
return cbin( mid + 1, dr, v, c);
else
return cbin( st, mid - 1, v, c);
}
else
return (st + dr)/2;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
vector <long int> v;
long int n, m, j, caut, poz;
f >> n;
for ( int i = 0 ; i < n; i++ )
{
f >> j;
v.push_back( j );
}
f >> m;
for ( int i = 0; i < m; i++ )
{
f >> j;
f >> caut;
poz = cbin( 0, v.size() - 1, v, caut );
if ( j == 0 )
{
if ( v[ poz ] == caut )
{
while ( v [ poz + 1 ] == caut )
poz ++;
g << poz + 1<< '\n';
}
else
g << -1 << '\n';
}
if ( j == 1 )
{
while ( v [ poz + 1 ] <= caut )
poz ++;
g << poz + 1<< '\n';
}
if ( j == 2 )
{
while ( v [ poz ] < caut )
poz ++;
g << poz + 1<< '\n';
}
}
return 0;
}