Cod sursa(job #2276924)

Utilizator DordeDorde Matei Dorde Data 5 noiembrie 2018 16:50:31
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");
int const NM = 15e3;
int dp [1 + NM] , aib [1 + NM] , n;
inline int fn (int x){
    return x & (0 - x);
}
void add (int pos , int x){
    for(int i = pos ; i <= n ; i += fn (i))
        aib [i] += x;
}
inline int best (int pos){
    int ans = 0;
    for(int i = pos ; i ; i -= fn (i))
        ans += aib [i];
    return ans;
}
int main()
{
    int q;
    f >> n >> q;
    for(int i = 1 ; i <= n ; ++ i){
        f >> dp [i];
        dp [i] += dp [i - 1];
    }
    for(int i = 1 ; i <= q ; ++ i){
        int t , a , b;
        f >> t >> a >> b;
        if (! t)
            add (a , b);
        else
            g << dp [b] - dp [-1 + a] - best (b) + best (-1 + a) << '\n';
    }
    return 0;
}