Cod sursa(job #1722169)

Utilizator TonisonIlle Antoniu Nicolae Tonison Data 27 iunie 2016 15:03:56
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
#include <fstream>

using namespace std;

ifstream f("aib.in");
ofstream g("aib.out");

int N,M;
int aib[100001];

void update(int val, int x)
{
    do
    {
        aib[x]+=val;
        x+= x&(-x);
    }
    while(x<=N);
}
int query(int x)
{
    int suma=0;
    while(x!=0)
    {
        suma+=aib[x];
        x-=x&(-x);
    }
    return suma;
}

int main()
{
    f>>N>>M;
    int x;
    for(int i=1; i<=N; ++i){
        f>>x;
        update(x,i);
    }

    int tip,a ,b;
    for(int i=1; i<=M; ++i){
        f>>tip;
        if(tip==1){
            f>>a>>b;
            g<<query(b)-query(a-1)<<"\n";
        }
        else{
            f>>a>>b;
            update(b,a);
        }
    }

    return 0;
}