Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define llong long long
- using namespace std;
- typedef vector<int> big;
- const int MAXN = (int) 2000 + 7;
- const int INF = (int) 2e9 + 7;
- int n, m;
- int sum[MAXN], a[MAXN];
- char s[20];
- int main() {
- #ifdef LOCAL
- freopen("in", "r", stdin);
- #endif
- scanf("%d%d", &n, &m);
- for (int i = 0; i < n; i++)
- scanf("%d", &a[i]);
- vector<int> ds;
- for (int i = 2; i * i <= n; i++) {
- if (n % i == 0) {
- ds.push_back(i);
- if (n / i != i)
- ds.push_back(n / i);
- }
- }
- if (n > 4 && n != 6)
- ds.push_back(1);
- for (auto d : ds)
- for (int i = 0; i < n; i += d)
- sum[d] += a[i];
- for (int i = 1; i <= m; i++) {
- scanf("\n%s", &s);
- if (s[0] == 'J') {
- int res = a[0];
- for (auto d : ds) {
- res = max(res, sum[d]);
- }
- printf("%d\n", res);
- }
- else if (s[0] == 'U') {
- int x, y;
- scanf("%d%d", &x, &y);
- --x;
- if (x < n) {
- for (auto d : ds)
- if (x % d == 0)
- sum[d] += y - a[x];
- }
- a[x] = y;
- }
- else {
- int sz;
- scanf("%d", &sz);
- n = sz;
- memset(sum, 0, sizeof sum);
- ds.clear();
- for (int i = 2; i * i <= n; i++) {
- if (n % i == 0) {
- ds.push_back(i);
- if (n / i != i)
- ds.push_back(n / i);
- }
- }
- if (n > 4 && n != 6)
- ds.push_back(1);
- for (auto d : ds)
- for (int i = 0; i < n; i += d)
- sum[d] += a[i];
- //for(int i=0;i<n;i++)cout<<a[i]<<' ';cout<<endl;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement