Advertisement
Guest User

tema

a guest
Feb 22nd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. template <typename T>
  6. struct node
  7. {
  8.     T val;
  9.     node* next;
  10. };
  11.  
  12.  
  13. int main()
  14. {
  15.     node<int32_t>* first = nullptr, *last = nullptr;
  16.  
  17.     uint16_t n;
  18.     std::cin >> n;
  19.     for (uint16_t i = 0; i < n; i++)
  20.     {
  21.         int32_t val;
  22.         std::cin >> val;
  23.         node<int32_t>* nNode = new node<int32_t>{ val, nullptr };
  24.  
  25.         if (first == nullptr)
  26.         {
  27.             first = last = nNode;
  28.         }
  29.         else
  30.         {
  31.             last->next = nNode;
  32.             last = last->next;
  33.         }
  34.     }
  35.  
  36.     std::vector<std::pair<uint16_t, uint8_t>> frecv(10000, std::make_pair(0, 0));
  37.  
  38.     uint16_t secvMax = 0, secvCurr = 0;
  39.     node<int32_t>* p = first;
  40.     while (p != nullptr && p != last)
  41.     {
  42.         uint16_t delUntil = 0;
  43.         for (uint16_t i = 0; i < n; i++)
  44.         {
  45.             if (frecv[p->val].second == 1)
  46.             {
  47.                 delUntil = frecv[p->val].first;
  48.                 for (uint16_t j = 0; j < delUntil + 1; j++)
  49.                 {
  50.                     first = first->next;
  51.                     n--;
  52.                 }
  53.                 p = first;
  54.                 break;
  55.             }
  56.             frecv[p->val] = std::make_pair(i, 1);
  57.             p = p->next;
  58.             secvCurr++;
  59.         }
  60.  
  61.         if (secvCurr > secvMax)
  62.         {
  63.             secvMax = secvCurr;
  64.         }
  65.         secvCurr = 0;
  66.         frecv = std::vector<std::pair<uint16_t, uint8_t>>(10000, std::make_pair(0, 0));
  67.     }
  68.  
  69.     std::cout << secvMax << std::endl;
  70.     std::getchar(); std::getchar();
  71.  
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement