原题连接:https://www.acwing.com/problem/content/4792/
输入样例:
6
6 4 2 7 2 7
3
2 3 6
1 3 4
1 1 6
输出样例:
24
9
28
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 1e5+10;
ll x[maxn],y[maxn];
int main()
{
int n; scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%lld",&x[i]);
y[i] = x[i];
}
sort(y+1,y+1+n);
for(int i=1;i<=n;i++) //前缀和处理
{
x[i]+=x[i-1];
y[i]+=y[i-1];
}
int m; scanf("%d",&m);
while(m--)
{
int k,l,r; scanf("%d %d %d",&k,&l,&r);
if(k == 1)
cout<<x[r]-x[l-1]<<endl;
else
cout<<y[r]-y[l-1]<<endl;
}
return 0;
}