bzoj 3212: Pku3468 A Simple Problem with Integers

来源:互联网 发布:卡佩拉体测数据 编辑:程序博客网 时间:2024/06/05 13:16

3212: Pku3468 A Simple Problem with Integers

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 2019  Solved: 879
[Submit][Status][Discuss]

Description

You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the sum of numbers in a given interval. 

Input

The first line contains two numbers N and Q. 1 ≤ N,Q ≤ 100000. 
The second line contains N numbers, the initial values of A1, A2, ... , AN. -1000000000 ≤ Ai ≤ 1000000000. 
Each of the next Q lines represents an operation. 
"C a b c" means adding c to each of Aa, Aa+1, ... , Ab. -10000 ≤ c ≤ 10000. 
"Q a b" means querying the sum of Aa, Aa+1, ... , Ab. 

Output

You need to answer all Q commands in order. One answer in a line. 

Sample Input

10 5
1 2 3 4 5 6 7 8 9 10
Q 4 4
Q 1 10
Q 2 4
C 3 6 3
Q 2 4

Sample Output

4
55
9
15


做个水题冷静一下。。。

就是区间加和区间查询

直接暴力

#include<stdio.h>#define LL long longLL a[100005], sum[100005];int main(void){char ch;int n, q, i, x, y, t;scanf("%d%d", &n, &q);for(i=1;i<=n;i++){scanf("%lld", &a[i]);sum[i] = sum[i-1]+a[i];}while(q--){scanf(" %c", &ch);if(ch=='Q'){scanf("%d%d", &x, &y);printf("%lld\n", sum[y]-sum[x-1]);}else{scanf("%d%d%d", &x, &y, &t);for(i=x;i<=n;i++){if(i<=y)a[i] += t;sum[i] = sum[i-1]+a[i];}}}return 0;}


原创粉丝点击