Codeforces Round #248 (Div. 2) B. Kuriyama Mirai's Stones

OpenSoucre發表於2014-05-24

題目簡單描述就是求陣列中[l,r]區間的和

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <numeric>
using namespace std;

int main(){
    int n,m;
    cin >> n;
    vector<long long> v(n+1,0);
    for(int i= 1 ; i <= n ; ++ i) cin >> v[i];
    vector<long long> u(v.begin(),v.end());
    sort(u.begin(),u.end());
    for(int i = 1; i <=n; ++ i){
        v[i]+=v[i-1];
        u[i]+=u[i-1];
    }
    cin >> m;
    for(int i = 0; i < m; ++ i){
        int number,l,r;
        cin >> number >> l >> r;
        if(number == 1) cout<<v[r]-v[l-1]<<endl;
        else cout<<u[r]-u[l-1]<<endl;
    }
}

 

相關文章