Cod sursa(job #2523010)

Utilizator lutusilviu ionut lutu Data 13 ianuarie 2020 17:30:38
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<iostream>
#include<fstream>
#include<cstring>
#include<math.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
void adauga(int x,int i, int A[],int n)
{
    do
    {
        A[i]+=x;
        i=i+i&-i;
    }
while(i<=n);
}
int A[10000];
int suma(int x,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<=n;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";
        }
    }
}