Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1.  
  2. #include<iostream>
  3. #include<vector>
  4. #include<set>
  5. #include<algorithm>
  6. #include<map>
  7. #include<limits>
  8. #include<cmath>
  9. #include<string>
  10. #include<iterator>
  11. #include<cstdio>
  12. #include<ctime>
  13. #include <deque>
  14.  
  15.  
  16. using namespace std;
  17.  
  18. #define ll long long
  19. const long long p = 59, mod = 433494437;
  20. /*
  21. long long H(int l, int r, vector<long long> hash) {
  22. long long big = hash[r];
  23. long long small = 0;
  24. if (l != 0) {
  25. small = (hash[l - 1] * pop[r - l + 1]) % mod;
  26. }
  27. return (big - small + mod) % mod;
  28.  
  29. } */
  30.  
  31.  
  32. int main()
  33. {
  34. ios_base::sync_with_stdio(0);
  35. cin.tie(0), cout.tie(0);
  36. set<ll> s;
  37. vector<ll> pw(12); pw[0] = 1;
  38. for (int i = 1; i < pw.size(); ++i) pw[i] = (pw[i - 1] * p)%mod;
  39.  
  40. while (true) {
  41. char c; cin >> c;
  42. if (c == '#') break;
  43. string t; cin >> t;
  44. ll hash = 0;
  45. for (int i = 0; i < t.size(); ++i) {
  46. hash = ((hash*p)%mod + t[i]) % mod;
  47. }
  48. if (c == '+') s.insert(hash);
  49. else {
  50. if (s.find(hash) != s.end()) cout << "YES" << endl;
  51. else cout << "NO" << endl;
  52. }
  53.  
  54.  
  55.  
  56.  
  57. }
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. return 0;
  65. }
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. #include<iostream>
  74. #include<vector>
  75. #include<algorithm>
  76. #include<map>
  77. #include<set>
  78. #include<limits>
  79. #include<cmath>
  80. #include<string>
  81. #include<cstdio>
  82.  
  83. using namespace std;
  84.  
  85. int n, k;
  86. vector<long long > a;
  87. vector<long long > t;
  88. void build(int v, int vl, int vr) {
  89. if (vl == vr) {
  90. t[v] = a[vl];
  91. return;
  92. }
  93. int vm = vl + (vr - vl) / 2;
  94. build(2 * v + 1, vl, vm);
  95. build(2 * v + 2, vm + 1, vr);
  96. t[v] = t[2 * v + 1] + t[2 * v + 2];
  97. }
  98. long long query(int v, int vl, int vr, int l, int r) {
  99. if (vl > r || vr < l) {
  100. return 0;
  101. }
  102. if (vl >= l && vr <= r) {
  103. return t[v];
  104. }
  105. int vm = vl + (vr - vl) / 2;
  106. long long ql = query(v * 2 + 1, vl, vm, l, r);
  107. long long qr = query(v * 2 + 2, vm + 1, vr, l, r);
  108. return ql + qr;
  109. }
  110. void modify(int v, int vl, int vr, int pos, long long val) {
  111. if (vl == vr) {
  112. t[v] = val;
  113. return;
  114. }
  115. int vm = vl + (vr - vl) / 2;
  116. if (pos <= vm) {
  117. modify(2 * v + 1, vl, vm, pos, val);
  118. }
  119. else {
  120. modify(2 * v + 2, vm + 1, vr, pos, val);
  121. }
  122. t[v] = t[v * 2 + 1] + t[v * 2 + 2];
  123.  
  124.  
  125. }
  126.  
  127.  
  128.  
  129. int main()
  130. {
  131. freopen("sum.in", "r", stdin);
  132. freopen("sum.out", "w", stdout);
  133.  
  134. cin >> n >> k;
  135. a.resize(n); t.resize(n * 4);
  136. build(0, 0, a.size() - 1);
  137. for (int i = 0; i < k; ++i) {
  138. char c; cin >> c;
  139. if (c == 'A') {
  140. int x; cin >> x;
  141. long long y; cin >> y;
  142. modify(0, 0, a.size() - 1, x - 1, y);
  143. }
  144. else {
  145. int l, r; cin >> l >> r;
  146. cout << query(0, 0, a.size() - 1, l - 1, r - 1) << endl;
  147. }
  148.  
  149. }
  150.  
  151.  
  152.  
  153. return 0;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement