Pagini recente » Cod sursa (job #1208970) | Cod sursa (job #2618866) | Cod sursa (job #2210418) | Cod sursa (job #2922352) | Cod sursa (job #1875618)
#include <fstream>
#include <cmath>
#include <vector>
using namespace std ;
ifstream cin ("cautbin.in") ;
ofstream cout ("cautbin.out") ;
vector < int > v ;
int TypeOne (int val)
{
int st = 1 ;
int dr = (int)v.size() - 1 ;
int found = 0 ;
while ( st <= dr ){
int mij = (st + dr) / 2 ;
if ( v[mij] > val ) {
dr = mij - 1 ;
}
else {
st = mij + 1 ;
found = mij ;
}
}
if (found != 0 and v[found] == val) {
return found ;
}
return -1 ;
}
int TypeTwo (int val)
{
int st = 1 ;
int dr = (int)v.size() - 1 ;
int found = 0 ;
while ( st <= dr ) {
int mij = (st + dr) >> 1 ;
if ( v[mij] > val ) {
dr = mij - 1 ;
}
else {
st = mij + 1 ;
found = mij ;
}
}
return found ;
}
int TypeThree (int val)
{
int st = 1 ;
int dr = (int)v.size() - 1 ;
int found = 0 ;
while (st <= dr) {
int mij = (st + dr) >> 1 ;
if ( v[mij] >= val ) {
dr = mij - 1 ;
found = mij ;
}
else {
st = mij + 1 ;
}
}
return found ;
}
int main()
{
int n ;
cin >> n ;
v.resize(n+1) ;
for (int i = 1 ; i <= n; ++ i) {
cin >> v[i] ;
}
int m ;
cin >> m ;
while ( m -- ) {
int tip ;
cin >> tip ;
if (tip == 0) {
int val ;
cin >> val ;
cout << TypeOne(val) << '\n' ;
}
else if (tip == 1) {
int val ;
cin >> val ;
cout << TypeTwo(val) << '\n' ;
}
else {
int val ;
cin >> val ;
cout << TypeThree(val) << '\n' ;
}
}
return 0 ;
}