Cod sursa(job #2205450)

Utilizator triscacezarTrisca Vicol Cezar triscacezar Data 19 mai 2018 10:56:16
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");

int v[100005], s[100005], n;
void up(int i,int k)
{
    for(;i<=n;i+=i&-i)
        v[i]-=k;
}
long long sum(long long a)
{
    long long s=0;
    for(;a>0;a-=a&-a)
        s+=v[a];
    return s;
}

int main()
{
    int q, m, i, p, a, b;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
        s[i]=s[i-1]+v[i];
        v[i]=s[i]-s[i-(i&-i)];
    }
    for(i=0;i<m;i++)
    {
        f>>p;
        if(p==0)
        {
            f>>a>>b;
            up(a,b);
        }
        else
            if(p==1)
            {
                f>>a>>b;
                g<<sum(b)-sum(a-1)<<'\n';
            }
    }
    return 0;
}