document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <bits/stdc++.h>
  2. #define SZ(X) ((int)(X).size())
  3. #define REP(I, N) for (int I = 0; I < (N); ++I)
  4. #define REPP(I, A, B) for (int I = (A); I < (B); ++I)
  5. #define RI(X) scanf("%d", &(X))
  6. #define DRI(X) int (X); scanf("%d", &X)
  7. #define DRII(X, Y) int X, Y; scanf("%d%d", &X, &Y)
  8. #define RS(X) scanf("%s", (X))
  9. #define PB push_back
  10. using namespace std;
  11. const int SIZE = 2e3+10;
  12. int a[SIZE],BIT[SIZE][SIZE];
  13. vector<int>fac[SIZE];
  14. void ins(int bit[],int x,int v){
  15.     for(;x<SIZE;x+=x&-x)bit[x]+=v;
  16. }
  17. int qq(int bit[],int x){
  18.     int res=0;
  19.     for(;x;x-=x&-x)res+=bit[x];
  20.     return res;
  21. }
  22. int main(){
  23.     REPP(i,1,SIZE){
  24.         for(int j=i;j<SIZE;j+=i)fac[j].PB(i);
  25.     }
  26.     DRII(N,Q);
  27.     REP(i,N){
  28.         RI(a[i]);
  29.     }
  30.     REPP(i,1,N+1){
  31.         REP(j,SZ(fac[i]))ins(BIT[fac[i][j]],i/fac[i][j],a[i]);
  32.     }
  33.     while(Q--){
  34.         char s[12];
  35.         RS(s);
  36.         if(s[0]==\'J\'){
  37.             if(N<=3)printf("%d\\n",a[0]);
  38.             else if(N==4)printf("%d\\n",max(a[0],a[0]+a[2]));
  39.             else if(N==6)printf("%d\\n",max(a[0],max(a[0]+a[3],a[0]+a[2]+a[4])));
  40.             else{
  41.                 int an=0;
  42.                 REP(i,SZ(fac[N])-1){
  43.                     an=max(an,qq(BIT[fac[N][i]],N/fac[N][i]-1));
  44.                 }
  45.                 printf("%d\\n",an+a[0]);
  46.             }
  47.         }
  48.         else if(s[0]==\'R\'){
  49.             RI(N);
  50.         }
  51.         else{
  52.             DRII(x,v);
  53.             x--;
  54.             if(x){
  55.                 int dif=v-a[x];
  56.                 REP(j,SZ(fac[x]))ins(BIT[fac[x][j]],x/fac[x][j],dif);
  57.             }
  58.             a[x]=v;
  59.         }
  60.     }
  61.     return 0;
  62. }
');