Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <algorithm>
- #include <vector>
- template<class F, class S, class T>class triple
- {
- public:
- F first;
- S second;
- T third;
- triple() = default;
- ~triple() = default;
- triple(const F& f, const S& s, const T& t) : first(f), second(s), third(t) {}
- triple& operator=(const triple<F, S, T>& p)
- {
- first = p.first;
- second = p.second;
- third = p.third;
- return *this;
- }
- };
- int main()
- {
- int n = 0;
- std::scanf("%d", &n);
- std::vector<triple<int, int, int>> time(n);
- for (int i = 0; i < n; i++)
- {
- time[i].first = i;
- std::scanf("%d%d", &time[i].second, &time[i].third);
- }
- std::sort(time.begin(), time.end(), [](
- const triple<int, int, int>& f,
- const triple<int, int, int>& s
- ) { return f.second < s.second; }
- );
- int cur_day = time.front().second;
- std::vector<std::pair<int, int>> ans(n);
- for (const auto& [ind, start, finish ] : time)
- {
- ans[ind] = cur_day > finish ? std::make_pair(-1, -1) : std::make_pair(std::max(start, cur_day), finish);
- cur_day = cur_day == finish ? cur_day + 1 : std::max(cur_day, finish);
- }
- std::for_each(
- ans.begin(),
- ans.end(),
- [](const std::pair<int, int>& p) { std::printf("%d %d\n", p.first, p.second); }
- );
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement