O_Egor

Односвязный список (19(1))!!! (2 балла) (with bugs)

Dec 8th, 2019 (edited)
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.54 KB | None | 0 0
  1. #include <vector>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <string>
  6. #include <set>
  7. #include <map>
  8.  
  9. using namespace std;
  10.  
  11. #define re return
  12. #define pb push_back
  13. #define eb emplace_back
  14. #define all(x) (x).begin(), (x).end()
  15. #define fi first
  16. #define se second
  17. #define sqrt(x) sqrt(abs(x))
  18. #define pi (3.14159265358979323846264338327950288419716939937510)
  19. #define unique(v) v.resize(unique(all(v)) - v.begin())
  20. #define bipbup ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
  21.  
  22. typedef vector<int> vi;
  23. typedef vector<vi> vvi;
  24. typedef pair<int, int> ii;
  25. typedef vector<ii> vii;
  26. typedef vector<string> vs;
  27. typedef double D;
  28. typedef long double ld;
  29. typedef long long ll;
  30. typedef pair<ll, ll> pll;
  31. typedef vector<ll> vll;
  32. typedef unsigned long long ull;
  33.  
  34. //Задача: найти максимальную возрастающую подпоследоваетльность последовательности и удалить её.
  35.  
  36. struct element
  37. {
  38.     int inf;
  39.     element* next;
  40. };
  41. element* beg, * help, * last;
  42.  
  43. int main()
  44. {
  45.     bipbup;
  46.     setlocale(LC_ALL, "Russian");
  47.  
  48.     int n;
  49.     cin >> n;
  50.  
  51.     beg = new element;
  52.     beg->inf = 1337;
  53.     //beg->next = NULL;
  54.     last = beg;
  55.  
  56.     for (int i = 0; i < n; ++i)
  57.     {
  58.         help = new element;
  59.         cin >> help->inf;
  60.         last->next = help;
  61.         last = help;
  62.     }
  63.     last->next = NULL;
  64.  
  65.     help = beg->next;
  66.     if (n == 1)
  67.     {
  68.         cout << beg->next->inf;
  69.         re 0;
  70.     }
  71.     int mx(0), c(1);
  72.  
  73.     element* del, * del1;
  74.     del = del1 = beg;
  75.  
  76.     while (help->next != NULL)
  77.     {
  78.         if (help->next->inf > help->inf)
  79.             c++;
  80.         else
  81.         {
  82.             if (c > mx)
  83.             {
  84.                 del1 = del;
  85.                 mx = c;
  86.             }
  87.             c = 1;
  88.             del = help;
  89.         }
  90.         help = help->next;
  91.     }
  92.     if (mx < c)
  93.     {
  94.         mx = c;
  95.         del1 = del;
  96.     }
  97.     help = del1->next;
  98.     last = del1;
  99.     while (mx--)
  100.     {
  101.         del1->next = help->next;
  102.         delete help;
  103.         help = del1->next;
  104.     }
  105.     delete help;
  106.     last->next = del1->next;
  107.     help = beg->next;
  108.     if (help)
  109.         while (help)
  110.         {
  111.             cout << help->inf << ' ';
  112.             help = help->next;
  113.         }
  114.     else
  115.         cout << "Вся последовательность является возрастающей! Она была полностью удалена!";
  116.     re 0;
  117. }
  118.  
  119. /**
  120. 12
  121. 1 2 3 4 1 2 3 4 5 1 2 3
  122. **/
Add Comment
Please, Sign In to add comment