Pagini recente » Monitorul de evaluare | Cod sursa (job #1936563)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
vector <int> numbers;
vector <int> :: iterator itPosition;
int totalNumbers, questions, position;
int main(){
fin >>totalNumbers;
for ( int number, index = 1; index <= totalNumbers; index++ ){
fin >> number;
numbers.push_back(number);
}
fin >> questions;
for ( int operation, searchedNumber; questions; questions-- ){
fin >> operation >> searchedNumber;
switch(operation){
case 0:
itPosition = upper_bound(numbers.begin(), numbers.end(), searchedNumber);
position = itPosition - numbers.begin();
cout << position << " " << searchedNumber << "\n";
if ( itPosition >= numbers.begin() and itPosition <= numbers.end() and numbers[position-1] == searchedNumber )
fout << itPosition - numbers.begin()<< "\n";
else
fout << -1 << "\n";
break;
case 1:
itPosition = lower_bound(numbers.begin(), numbers.end(), searchedNumber+1);
fout << itPosition - numbers.begin() << "\n";
break;
case 2:
itPosition = upper_bound(numbers.begin(), numbers.end(), searchedNumber-1);
fout << itPosition - numbers.begin() +1<< "\n";
break;
}
}
}