Advertisement
Guest User

Untitled

a guest
Apr 25th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define llong long long
  4.  
  5. using namespace std;
  6.  
  7. typedef vector<int> big;
  8.  
  9. const int MAXN = (int) 2000 + 7;
  10. const int INF = (int) 2e9 + 7;
  11.  
  12. int n, m;
  13. int sum[MAXN], a[MAXN];
  14.  
  15. char s[20];
  16.  
  17. int main() {
  18. #ifdef LOCAL
  19. freopen("in", "r", stdin);
  20. #endif
  21.  
  22. scanf("%d%d", &n, &m);
  23. for (int i = 0; i < n; i++)
  24. scanf("%d", &a[i]);
  25.  
  26. vector<int> ds;
  27. for (int i = 2; i * i <= n; i++) {
  28. if (n % i == 0) {
  29. ds.push_back(i);
  30. if (n / i != i)
  31. ds.push_back(n / i);
  32. }
  33. }
  34. if (n > 4 && n != 6)
  35. ds.push_back(1);
  36.  
  37. for (auto d : ds)
  38. for (int i = 0; i < n; i += d)
  39. sum[d] += a[i];
  40.  
  41. for (int i = 1; i <= m; i++) {
  42. scanf("\n%s", &s);
  43. if (s[0] == 'J') {
  44. int res = a[0];
  45. for (auto d : ds) {
  46. res = max(res, sum[d]);
  47. }
  48. printf("%d\n", res);
  49. }
  50. else if (s[0] == 'U') {
  51. int x, y;
  52. scanf("%d%d", &x, &y);
  53. --x;
  54. if (x < n) {
  55. for (auto d : ds)
  56. if (x % d == 0)
  57. sum[d] += y - a[x];
  58. }
  59. a[x] = y;
  60. }
  61. else {
  62. int sz;
  63. scanf("%d", &sz);
  64.  
  65. n = sz;
  66. memset(sum, 0, sizeof sum);
  67.  
  68. ds.clear();
  69. for (int i = 2; i * i <= n; i++) {
  70. if (n % i == 0) {
  71. ds.push_back(i);
  72. if (n / i != i)
  73. ds.push_back(n / i);
  74. }
  75. }
  76. if (n > 4 && n != 6)
  77. ds.push_back(1);
  78.  
  79. for (auto d : ds)
  80. for (int i = 0; i < n; i += d)
  81. sum[d] += a[i];
  82.  
  83. //for(int i=0;i<n;i++)cout<<a[i]<<' ';cout<<endl;
  84. }
  85. }
  86. return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement