Advertisement
OMEGAHEAD_MonkoX

Untitled

Jan 12th, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4. #include <sstream>
  5. #include <algorithm>
  6. #include <vector>
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <fstream>
  10. #include <stack>
  11. #include <map>
  12. #include <cstring>
  13. #include <cmath>
  14. #include <set>
  15. #include <iterator>
  16. #include <cmath>
  17.  
  18. using namespace std;
  19.  
  20. istream & operator >> (istream & in, vector<int> & v)
  21. {
  22.     string str;
  23.     getline(in,str);
  24.     stringstream stream(str);
  25.     int tmp;
  26.     while(stream >> tmp)
  27.         v.push_back(tmp);
  28.     return in;
  29. }
  30.  
  31. ostream & operator << (ostream & out, vector<int> const & v)
  32. {
  33.     for(int el: v)
  34.         out << el << ' ';
  35.     return out;
  36. }
  37.  
  38. int KolVoRod(map<string, string> Roditel, string el)
  39. {
  40.     int k = -1;
  41.     while (1 == 1)
  42.     {
  43.         if (Roditel.find(el) != Roditel.end()){
  44.             el = Roditel[el];
  45.             ++k;
  46.         }
  47.         else
  48.             break;
  49.     }
  50.     return k;
  51. }
  52.  
  53. int main()
  54. {
  55.     int K, N;
  56.     cin >> K >> N;
  57.     vector<int> vec(N), vec2(N), vec3(N);
  58.     set<int> s;
  59.     multiset<pair<int, int>> ms;
  60.     for (auto i = 0; i < N; ++i)
  61.         cin >> vec[i] >> vec2[i];
  62.     for (auto i = 1; i <= K; ++i)
  63.         s.insert(i);
  64.     for (auto i = 0; i < N; ++i)
  65.     {
  66.         for (auto j = ms.begin(); j != ms.end();)
  67.             if (j->first < vec[i])
  68.             {
  69.                 for (auto el = j; el != ms.end() & el->first == j->first; ++el)
  70.                     s.insert(el->second);
  71.                 j = ms.erase(j);
  72.             }
  73.             else
  74.                 break;
  75.         if (s.size() == 0 )
  76.             return (cout << 0 << " " << i + 1, 0);
  77.         vec3[i] = *s.begin();
  78.         ms.insert({vec2[i], *s.begin()});
  79.         s.erase(*s.begin());
  80.     }
  81.     for (auto el: vec3){
  82.         cout << el << endl;
  83.     }
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement