1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4
5 using namespace std;
6 const int N=1000;
7
8 int a[N];
9 int sum[N];
10 int belong[N];
11 int size[N]
12 int add[N];
13
14
15 int K_ask(int l,int r)
16 {
17 int ans=0;
18 if(belong[l]==belong[r])ans-=sum[belong[l]];
19 while(belong[l]==belong[l-1])
20 {
21 ans+=a[l]+add[belong[l]];
22 l++;
23 }
24 while(belong[r]==belong[r+1])
25 {
26 ans+=a[r]+add[belong[r]];
27 r--;
28 }
29 for(int i=belong[l]+1;i<belong[r];i++)
30 {
31 ans+=sum[i];
32 }
33 return sum[i];
34 }
35
36 void K_mo(int l,int r,int v)
37 {
38 if(belong[l]==belong[r])
39 {
40 for(int i=l;i<=r;i++)
41 {
42 a[i]+=v;
43 }
44 return ;
45 }
46 while(belong[l]==belong[l-1])
47 {
48 a[l]+=v;
49 l++;
50 }
51 while(belong[r]==belong[r+1])
52 {
53 a[r]+=v;
54 r--;
55 }
56 for(int i=belong[l]+1;i<belong[r];i++)
57 {
58 add[i]+=v;
59 sum[i]+=size[i]*v;
60 }
61 }
62
63 int main()
64 {
65 int n;
66 cin>>n;
67 int s=sqrt(n);
68 for(int i=1;i<=n;i++)
69 {
70 cin>>a[i];
71 }
72 for(int i=1;i<=n;i++)
73 {
74 belong[i]=(i-1)/s+1;
75 }
76 int cnt=belong[n];
77 for(int i=1;i<s;i++)
78 {
79 sum[i]=0;add[i]=0;
80 size[i]=s;
81 }
82 if(!n%s)size[cnt]=s;
83 else size[cnt]=n%s;
84
85 for(int i=1;i<=n;i++)
86 {
87 sum[belong[i]]+=a[i];
88 }
89
90 //...
91 K_ask(l,r);
92 K_mo(l,r,v);
93 }