Advertisement
ke_timofeeva7

задача на до с рукода

Nov 15th, 2021 (edited)
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.33 KB | None | 0 0
  1. /*
  2. ⠸⣷⣦⠤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣤⠀⠀⠀
  3. ⠀⠙⣿⡄⠈⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠔⠊⠉⣿⡿⠁⠀⠀⠀
  4. ⠀⠀⠈⠣⡀⠀⠀⠑⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠊⠁⠀⠀⣰⠟⠀⠀⠀⣀⣀
  5. ⠀⠀⠀⠀⠈⠢⣄⠀⡈⠒⠊⠉⠁⠀⠈⠉⠑⠚⠀⠀⣀⠔⢊⣠⠤⠒⠊⠉⡜
  6. ⠀⠀⠀⠀⠀⠀⠀⡽⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠩⡔⠊⠁⠀⠀⠀⠀⠀ ⠀⠇
  7. ⠀⠀⠀⠀⠀⠀⠀⡇⢠⡤⢄⠀⠀⠀⠀⠀⡠⢤⣄⠀⡇⠀⠀⠀⠀⠀⠀⠀ ⢰⠀
  8. ⠀⠀⠀⠀⠀⠀⢀⠇⠹⠿⠟⠀⠀⠤⠀⠀⠻⠿⠟⠀⣇⠀⠀⡀⠠⠄⠒⠊⠁⠀
  9. ⠀⠀⠀⠀⠀⠀⢸⣿⣿⡆⠀⠰⠤⠖⠦⠴⠀⢀⣶⣿⣿⠀⠙⢄⠀⠀⠀⠀⠀⠀
  10. ⠀⠀⠀⠀⠀⠀⠀⢻⣿⠃⠀⠀⠀⠀⠀⠀⠀⠈⠿⡿⠛⢄⠀⠀⠱⣄⠀⠀⠀⠀
  11. ⠀⠀⠀⠀⠀⠀⠀⢸⠈⠓⠦⠀⣀⣀⣀⠀⡠⠴⠊⠹⡞⣁⠤⠒⠉⠀⠀⠀⠀⠀
  12. ⠀⠀⠀⠀⠀⠀⣠⠃⠀⠀⠀⠀⡌⠉⠉⡤⠀⠀⠀⠀⢻⠿⠆⠀⠀⠀⠀⠀⠀⠀
  13. ⠀⠀⠀⠀⠀⠰⠁⡀⠀⠀⠀⠀⢸⠀⢰⠃⠀⠀⠀⢠⠀⢣⠀⠀⠀⠀⠀⠀⠀⠀
  14. ⠀⠀⠀⢶⣗⠧⡀⢳⠀⠀⠀⠀⢸⣀⣸⠀⠀⠀⢀⡜⠀⣸⢤⣶⠀⠀⠀⠀⠀⠀
  15. ⠀⠀⠀⠈⠻⣿⣦⣈⣧⡀⠀⠀⢸⣿⣿⠀⠀⢀⣼⡀⣨⣿⡿⠁⠀⠀⠀⠀⠀⠀
  16. ⠀⠀⠀⠀⠀⠈⠻⠿⠿⠓⠄⠤⠘⠉⠙⠤⢀⠾⠿⣿⠟⠋
  17. */
  18.  
  19.  
  20. #include <iostream>
  21. #include <string>
  22. #include <sstream>
  23. #include <vector>
  24. #include <cmath>
  25. #include <algorithm>
  26. #include <memory.h>
  27. #include <stdio.h>
  28. #include <stack>
  29. #include <deque>
  30. #include <queue>
  31. #include <set>
  32. #include <iterator>
  33. #include <map>
  34. #include <iomanip>
  35. #include <unordered_set>
  36. using namespace std;
  37.  
  38. const unsigned int R = 1 << 15, INF = 4294967294;
  39. //unsigned int MOD = 4294967296;
  40.  
  41. unsigned int tree[2 * R + 5];
  42.  
  43. inline void build()
  44. {
  45.     for (int i = R - 1; i > 0; i--)
  46.     {
  47.         tree[i] = min(tree[i * 2], tree[i * 2 + 1]);
  48.     }
  49.  
  50.     return;
  51. }
  52.  
  53. inline unsigned int minn(unsigned int ql, unsigned int qr, unsigned int v, unsigned int nl, unsigned int nr)
  54. {
  55.     if (nl > qr || nr < ql)
  56.     {
  57.         return INF;
  58.     }
  59.  
  60.     if (nl >= ql && nr <= qr)
  61.     {
  62.         return tree[v];
  63.     }
  64.  
  65.     unsigned int nm = (nl + nr) / 2;
  66.  
  67.     unsigned int lol = minn(ql, qr, 2 * v, nl, nm);
  68.  
  69.     unsigned int kek = INF;
  70.  
  71.     if (tree[v * 2 + 1] < lol || lol == INF)
  72.     {
  73.         kek = minn(ql, qr, 2 * v + 1, nm + 1, nr);
  74.     }
  75.  
  76.     return min(lol, kek);
  77. }
  78.  
  79. signed main()
  80. {
  81.     ios_base::sync_with_stdio(false);
  82.     cin.tie(0);
  83.     cout.tie(0);
  84.  
  85.     unsigned int n, m, a, b;
  86.  
  87.     while (true)
  88.     {
  89.         cin >> n >> m >> a >> b;
  90.  
  91.         if (n == m && m == a && a == b && b == 0)
  92.         {
  93.             return 0;
  94.         }
  95.  
  96.         for (unsigned int i = 0; i < n; i++)
  97.         {
  98.             tree[i + R] = (a * (i + 1) + b);
  99.         }
  100.  
  101.         for (unsigned int i = n; i <= R; i++)
  102.         {
  103.             tree[i + R] = INF;
  104.         }
  105.  
  106.         build();
  107.  
  108.         unsigned long long ans = 0;
  109.  
  110.         for (unsigned int i = n + 1; i < n + 2 * m; i += 2)
  111.         {
  112.             unsigned int l = (a * i + b);
  113.             unsigned int r = (a * (i + 1) + b);
  114.  
  115.             l %= n;
  116.             r %= n;
  117.  
  118.             l++;
  119.             r++;
  120.  
  121.             ans += minn(min(l, r), max(l, r), 1, 1, R);
  122.         }
  123.  
  124.         cout << ans << "\n";
  125.     }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement