Cod sursa(job #2833849)

Utilizator OrzaSERBANSerban Orza OrzaSERBAN Data 15 ianuarie 2022 19:48:05
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");

int n,m;
long long nr;
int aib[1001];//[i-2^j+1,i] unde j e nr de 0 terminale a lui i

long long suma(int poz)//de la [1...poz]
{
    long long ans=0;
    while(poz>0)
    {
        ans=ans+aib[poz];
        poz=poz-(poz&(-poz));
    }
    return ans;
}
void update(int poz,int val)
{
    while(poz<=n)
    {
        aib[poz]+=val;   //actualizam aib-urile care il contin pe poz
        poz=poz+(poz&(-poz));
    }
}
int main()
{
    //ios_base::sync_with_stdio(0);
    //f.tie(0);
    //g.tie(0);
    int i,j,k,z,zz;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>z;
        update(i,z);
    }
    for(i=1;i<=m;i++)
    {
        f>>k>>z>>zz;
        if(k==0)
            update(z,-zz);//ziua si val
        else
        {
            nr=suma(zz)-suma(z-1);
            g<<nr<<'\n';
        }
    }
    return 0;
}