Pagini recente » Cod sursa (job #100149) | Cod sursa (job #1585509) | Cod sursa (job #1290266) | Cod sursa (job #2792099) | Cod sursa (job #1120078)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int cbin ( int st, int dr, vector<int> v, int c )
{
if ( st <= dr )
{
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 <int> v;
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;
}