Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<vector>
- #include<utility>
- #include<string>
- #include<algorithm>
- #include<map>
- const int mapsCount = 2;
- const int lowLimits = 0;
- const int highLimits = 1;
- std::vector<std::map<int, int>> readInputRanges() {
- std::vector<std::map<int, int>> vec{ mapsCount };
- const std::string delimiter = ".";
- std::string numbAsStr;
- int numbersCount = 0;
- int oddId = 0;
- int evenId = 0;
- while (true)
- {
- std::cin >> numbAsStr;
- if (numbAsStr == delimiter)
- {
- break;
- }
- numbersCount++;
- if (numbersCount & 1)
- {
- int currLowLimit = std::stoi(numbAsStr);
- vec[lowLimits][currLowLimit] = oddId;
- oddId++;
- }
- else
- {
- int currHighLimit = std::stoi(numbAsStr);
- vec[highLimits][currHighLimit] = evenId;
- evenId++;
- }
- }
- return vec;
- }
- std::vector<int> readQueries() {
- std::vector<int> queries{};
- //const std::string delimiter = ".";
- int query = 0;
- std::cin >> query;
- while (!std::cin.fail())
- {
- queries.push_back(query);
- std::cin >> query;
- }
- std::cin.clear();
- return queries;
- }
- void printSolution(const std::vector<std::map<int, int>>& ranges, const std::vector<int>& queries) {
- const size_t queriesSize = queries.size();
- for (size_t i = 0; i < queriesSize; i++)
- {
- auto low = ranges[lowLimits].upper_bound(queries[i]);
- auto high = ranges[highLimits].lower_bound(queries[i]);
- if (high != ranges[highLimits].end())
- {
- bool isRange = low != ranges[lowLimits].begin() && ((--low)->second == high->second);
- if (isRange)
- {
- std::cout << "in" << std::endl;
- }
- else
- {
- std::cout << "out" << std::endl;
- }
- }
- else
- {
- std::cout << "out" << std::endl;
- }
- }
- }
- int main() {
- const std::vector<std::map<int, int>> ranges = readInputRanges();
- const std::vector<int> queries = readQueries();
- printSolution(ranges, queries);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement