ke_timofeeva7

задачи пятого дня

Mar 26th, 2021
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.03 KB | None | 0 0
  1. // сумма простая
  2.  
  3. #include <iostream>
  4. #include <string>
  5. #include <sstream>
  6. #include <cmath>
  7. #include <algorithm>
  8. #include <memory.h>
  9. #include <stdio.h>
  10. #include <vector>
  11. #include <stack>
  12. #include <deque>
  13. #include <queue>
  14. #include <vector>
  15. #include <set>
  16. #include <iterator>
  17. #include <map>
  18. #include <iomanip>
  19. #define int long long
  20. #define fir first
  21. #define sec second
  22. #define sp system("pause")
  23. #define pb push_back
  24. #define double long double
  25. #define endl "\n"
  26. #define un unsigned
  27. using namespace std;
  28.  
  29. int mas[10000005];
  30. int bas[20000005];
  31. int cas[20000005];
  32. int pref[10000000];
  33.  
  34. signed main() {
  35.     ios_base::sync_with_stdio();
  36.     cin.tie(0);
  37.     cout.tie(0);
  38.  
  39.     int n, x, y, q;
  40.     cin >> n >> x >> y >> q;
  41.  
  42.     mas[0] = q;
  43.  
  44.     for (int i = 1; i < n; i++)
  45.     {
  46.         mas[i] = (mas[i - 1] * x + y + 65536) % 65536;
  47.     }
  48.  
  49.     int m;
  50.     cin >> m;
  51.  
  52.     int z, t;
  53.     cin >> z >> t >> q;
  54.  
  55.  
  56.     bas[0] = q;
  57.     cas[0] = q % n;
  58.  
  59.     for (int i = 1; i < 2 * m; i++)
  60.     {
  61.         bas[i] = (bas[i - 1] * z + t + 1073741824) % 1073741824;
  62.         cas[i] = (bas[i] % n + n) % n;
  63.     }
  64.  
  65.     pref[0] = mas[0];
  66.  
  67.     for (int i = 1; i < n; i++)
  68.     {
  69.         pref[i] = pref[i - 1] + mas[i];
  70.     }
  71.  
  72.     int l, r;
  73.     int ans = 0;
  74.     for (int i = 0; i < m; i++)
  75.     {
  76.         if (2 * i + 1 < 2 * m)
  77.         {
  78.             l = min(cas[2 * i], cas[2 * i + 1]);
  79.             r = max(cas[2 * i], cas[2 * i + 1]);
  80.         }
  81.         if (r < n)
  82.         {
  83.             ans += pref[r];
  84.             if (l > 0)
  85.             {
  86.                 ans -= pref[l - 1];
  87.             }
  88.         }
  89.     }
  90.     cout << ans;
  91.     //sp;
  92.     return 0;
  93. }
  94.  
  95.  
  96. //хороша ли подстрока
  97.  
  98. #include <iostream>
  99. #include <string>
  100. #include <sstream>
  101. #include <cmath>
  102. #include <algorithm>
  103. #include <memory.h>
  104. #include <stdio.h>
  105. #include <vector>
  106. #include <stack>
  107. #include <deque>
  108. #include <queue>
  109. #include <vector>
  110. #include <set>
  111. #include <iterator>
  112. #include <map>
  113. #include <iomanip>
  114. #define int long long
  115. #define fir first
  116. #define sec second
  117. #define sp system("pause")
  118. #define pb push_back
  119. #define double long double
  120. #define endl "\n"
  121. #define un unsigned
  122. using namespace std;
  123.  
  124. int pref[1000000];
  125.  
  126. signed main() {
  127.     ios_base::sync_with_stdio();
  128.     cin.tie(0);
  129.     cout.tie(0);
  130.  
  131.     string s;
  132.     cin >> s;
  133.  
  134.     int bal = 0;
  135.  
  136.  
  137.     pref[0] = -1;
  138.  
  139.     if (s[0] == '(')
  140.     {
  141.         pref[0] += 2;
  142.     }
  143.  
  144.     for (int i = 1; i < s.size(); i++)
  145.     {
  146.         pref[i] = pref[i - 1] - 1;
  147.         if (s[i] == '(')
  148.         {
  149.             pref[i] += 2;
  150.         }
  151.     }
  152.  
  153.     int t;
  154.     cin >> t;
  155.  
  156.     for (int i = 0; i < t; i++)
  157.     {
  158.         int l, r;
  159.         cin >> l >> r;
  160.  
  161.         if (l > 1 && pref[r - 1] - pref[l - 2] == 0)
  162.         {
  163.             cout << 1;
  164.         }
  165.         else if (l == 1 && pref[r - 1] == 0)
  166.         {
  167.             cout << 1;
  168.         }
  169.         else
  170.         {
  171.             cout << 0;
  172.         }
  173.     }
  174.     //sp;
  175.     return 0;
  176. }
  177.  
  178.  
  179. //рмку
  180. #include <iostream>
  181. #include <string>
  182. #include <sstream>
  183. #include <cmath>
  184. #include <algorithm>
  185. #include <memory.h>
  186. #include <stdio.h>
  187. #include <vector>
  188. #include <stack>
  189. #include <deque>
  190. #include <queue>
  191. #include <vector>
  192. #include <set>
  193. #include <iterator>
  194. #include <map>
  195. #include <iomanip>
  196. #define int long long
  197. #define fir first
  198. #define sec second
  199. #define ssp system("pause")
  200. #define pb push_back
  201. #define double long double
  202. #define endl "\n"
  203. #define un unsigned
  204. using namespace std;
  205.  
  206. signed main() {
  207.     ios_base::sync_with_stdio();
  208.     cin.tie(0);
  209.     cout.tie(0);
  210.  
  211.     int n;
  212.     cin >> n;
  213.  
  214.     vector<int> a(n), logs(n + 1);
  215.  
  216.     for (int i = 0; i < n; i++)
  217.     {
  218.         cin >> a[i];
  219.     }
  220.  
  221.  
  222.     logs[1] = 0;
  223.     for (int i = 2; i <= n; i++)
  224.     {
  225.         logs[i] = logs[i / 2] + 1;
  226.     }
  227.  
  228.     vector<vector<pair<int, int>>> sp(logs[n] + 1, vector<pair<int, int>>(n));
  229.  
  230.     for (int i = 0; i < n; i++)
  231.     {
  232.         sp[0][i] = { a[i], i };
  233.     }
  234.  
  235.     for (int level = 1; (1 << level) <= n; level++)
  236.     {
  237.         for (int i = 0; i + (1 << level) <= n; i++)
  238.         {
  239.             if (sp[level - 1][i].first > sp[level - 1][i + (1 << (level - 1))].first)
  240.             {
  241.                 sp[level][i] = sp[level - 1][i];
  242.             }
  243.             else
  244.             {
  245.                 sp[level][i] = sp[level - 1][i + (1 << (level - 1))];
  246.             }
  247.  
  248.         }
  249.  
  250.     }
  251.  
  252.  
  253.     int m;
  254.     cin >> m;
  255.  
  256.     for (int i = 0; i < m; i++)
  257.     {
  258.         int l, r;
  259.         cin >> l >> r;
  260.         l--;
  261.         r--;
  262.  
  263.         int level = logs[r - l + 1];
  264.  
  265.         if (sp[level][l] > sp[level][r - (1 << level) + 1])
  266.         {
  267.             cout << sp[level][l].first << ' ' << sp[level][l].second + 1 << '\n';
  268.         }
  269.         else
  270.         {
  271.             cout << sp[level][r - (1 << level) + 1].first << " " << sp[level][r - (1 << level) + 1].second + 1 << endl;
  272.         }
  273.     }
  274.  
  275.     //ssp;
  276.     return 0;
  277. }
  278.  
  279. //сумма
  280. #include <iostream>
  281. #include <string>
  282. #include <sstream>
  283. #include <cmath>
  284. #include <algorithm>
  285. #include <memory.h>
  286. #include <stdio.h>
  287. #include <vector>
  288. #include <stack>
  289. #include <deque>
  290. #include <queue>
  291. #include <vector>
  292. #include <set>
  293. #include <iterator>
  294. #include <map>
  295. #include <iomanip>
  296. #define int long long
  297. #define fir first
  298. #define sec second
  299. #define sp system("pause")
  300. #define pb push_back
  301. #define double long double
  302. #define endl "\n"
  303. #define un unsigned
  304. using namespace std;
  305.  
  306. vector<int> t, a;
  307.  
  308. void build(int v, int tl, int tr) {
  309.     if (tl == tr)
  310.         t[v] = a[tl];
  311.     else
  312.     {
  313.         int tm = (tl + tr) / 2;
  314.  
  315.         build(v * 2, tl, tm);
  316.         build(v * 2 + 1, tm + 1, tr);
  317.  
  318.         t[v] = t[v * 2] + t[v * 2 + 1];
  319.     }
  320. }
  321.  
  322. void update(int v, int tl, int tr, int pos, int new_val)
  323. {
  324.     if (tl == tr)
  325.         t[v] = new_val;
  326.  
  327.     else
  328.     {
  329.         int tm = (tl + tr) / 2;
  330.  
  331.         if (pos <= tm)
  332.             update(v * 2, tl, tm, pos, new_val);
  333.         else
  334.             update(v * 2 + 1, tm + 1, tr, pos, new_val);
  335.  
  336.         t[v] = t[v * 2] + t[v * 2 + 1];
  337.     }
  338. }
  339.  
  340.  
  341. int sum(int v, int tl, int tr, int l, int r) {
  342.     if (l > r)
  343.         return 0;
  344.     if (l == tl && r == tr)
  345.         return t[v];
  346.     int tm = (tl + tr) / 2;
  347.     return sum(v * 2, tl, tm, l, min(r, tm)) + sum(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r);
  348. }
  349.  
  350. signed main() {
  351.     ios_base::sync_with_stdio(0);
  352.     cin.tie(0);
  353.     cout.tie(0);
  354.  
  355.     int n, k;
  356.     cin >> n >> k;
  357.     t.resize(4 * n);
  358.     a.resize(n);
  359.  
  360.     for (int j = 0; j < k; j++) {
  361.         char command;
  362.         cin >> command;
  363.         if (command == 'A') {
  364.             long long i, x;
  365.             cin >> i >> x;
  366.             update(1, 0, n - 1, i - 1, x);
  367.         }
  368.         else if (command == 'Q')
  369.         {
  370.             int l, r;
  371.             cin >> l >> r;
  372.             cout << sum(1, 0, n - 1, l - 1, r - 1) << '\n';
  373.         }
  374.     }
  375.  
  376.     sp;
  377.     return 0;
  378. }
Advertisement
Add Comment
Please, Sign In to add comment