AcWing 4789. 前缀和序列
原题链接
中等
作者:
王一博铁粉
,
2024-04-19 15:20:07
,
所有人可见
,
阅读 1
C++ 代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
typedef long long LL;
LL a[N], b[N], s1[N], s2[N];
int n, m, l, r;
int main()
{
cin >> n;
for(int i = 1; i <= n; i ++){
cin >> a[i];
b[i] = a[i];
}
sort(b + 1, b + n + 1);
//预处理前s1[i]的和
for(int i = 1; i <= n; i ++){
s1[i] = s1[i-1] + a[i];
s2[i] = s2[i-1] + b[i];
}
cin >> m;
int num = 0;//用num记录是1还是2
while(m --){
cin >> num >> l >> r;
if(num == 1){
cout << s1[r] - s1[l-1] << endl;
}else{
cout << s2[r] - s2[l-1] << endl;
}
}
return 0;
}