Cod sursa(job #2523645)

Utilizator lutusilviu ionut lutu Data 14 ianuarie 2020 15:48:16
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
void adauga(int x,int i, unsigned short int A[],int n)
{
    do
    {
        A[i]+=x;
        i=i+(i&(-i));
    }
while(i<=n);
}
unsigned short int A[15040];
int suma(int x,unsigned short int A[])
{
    int s=0;
    while(x)
    {
        s+=A[x];
        x=x&(x-1);
    }
    return s;
}
int main()
{
    int n,k,i,x,p,a,b,t,v;
    f>>n>>k;
    for(i=1;i<=n;i++)
    {
        f>>x;
       adauga(x,i,A,n);
    }
    for(i=1;i<=k;i++)
    {
        f>>p;
        if(p==0)
        {
            f>>t>>v;
            adauga(-v,t,A,n);
        }
        else
        {
            f>>a>>b;
            g<<suma(b,A)-suma(a-1,A)<<"\n";
        }
    }
}