Advertisement
OMEGAHEAD_MonkoX

tUPICK

Jan 19th, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.01 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 KolVoRod2ndTry(string str, map<string, string> d, int k)
  54. {
  55.     if(d.find(str) == d.end())
  56.         return k;
  57.     else
  58.     {
  59.         ++k;
  60.         return KolVoRod2ndTry(d[str], d, k);
  61.     }
  62.  
  63. }
  64.  
  65. int main()
  66. {
  67.     int K, N;
  68.     cin >> K >> N;
  69.     vector<int> vec(N), vec2(N), vec3(N);
  70.     set<int> s;
  71.     multiset<pair<int, int>> ms;
  72.     for (auto i = 0; i < N; ++i)
  73.         cin >> vec[i] >> vec2[i];
  74.     for (auto i = 1; i <= K; ++i)
  75.         s.insert(i);
  76.     for (auto i = 0; i < N; ++i)
  77.     {
  78.         for (auto j = ms.begin(); j != ms.end();)
  79.             if (j->first < vec[i])
  80.             {
  81.                 for (auto el = j; el != ms.end() & el->first == j->first; ++el)
  82.                     s.insert(el->second);
  83.                 j = ms.erase(j);
  84.             }
  85.             else
  86.                 break;
  87.         if (s.size() == 0 )
  88.             return (cout << 0 << " " << i + 1, 0);
  89.         vec3[i] = *s.begin();
  90.         ms.insert({vec2[i], *s.begin()});
  91.         s.erase(*s.begin());
  92.     }
  93.     for (auto el: vec3){
  94.         cout << el << endl;
  95.     }
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement