Cod sursa(job #2439857)

Utilizator AdrianaMAdriana Moisil AdrianaM Data 16 iulie 2019 23:31:32
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
using namespace std;
 
ifstream is("datorii.in");
ofstream os("datorii.out");
 
int n, m, c[15001];
int x, y, z;
 
void UPDATE(int poz, int val);
int SUM(int poz);
 
int main()
{
    is >> n >> m;
    for ( int i = 1; i <= n; ++i )
    {
        is >> x;
        for ( int j = i; j <= n; j += j & -j )
            c[j] += x;
    }
    while ( m-- )
    {
        is >> x >> y >> z;
        if ( !x )
            UPDATE(y, z);
        else
            os << SUM(z) - SUM(y - 1) << "\n";
    }
    is.close();
    os.close();
    return 0;
}
 
void UPDATE(int poz, int val)
{
    for ( int i = poz; i <= n; i += i & -i )
        c[i] -= val;
}
 
int SUM(int poz)
{
    int s = 0;
    for ( int i = poz; i; i -= i & -i )
        s += c[i];
    return s;
}