Cod sursa(job #1711880)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 1 iunie 2016 14:07:55
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<fstream>
#define NMax 15007
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");

int N,M;
int X[NMax];

int Query(int poz)
{
    int Sum = 0;

    for(int i = poz ; i ; i -= ( i & (-i) ) )
        Sum += X[i];

    return Sum;
}

void Update(int poz,int val)
{
    for(int i = poz ; i <= N ; i += ( i & (-i) ))
        X[i] += val;
}

void Read()
{
    fin>>N>>M;

    for(int i = 1 ; i <= N ; ++i)
    {
        int x;  fin>>x;
        Update(i,x);
    }
}

void Solve()
{
    for(int i = 1 ; i <= M ; ++i)
    {
        int t;  fin>>t;

        if(t)
        {
            int P,Q;    fin>>P>>Q;

            fout<<Query(Q) - Query(P-1)<<"\n";
        }
        else
        {
            int T,V;    fin>>T>>V;

            Update(T,-V);
        }
    }
}

int main()
{
    Read();
    Solve();

    fin.close();
    fout.close();
    return 0;
}