Cod sursa(job #2314191)

Utilizator IordachescuAncaFMI Iordachescu Anca Mihaela IordachescuAnca Data 8 ianuarie 2019 01:23:28
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
#define f(x) (x&(-x))
using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

int N,M, ai[15004];

void update(int x, int c,int ai[], int N)
{
    int i;
    for(i=x;i<=N;i=i+f(i))
    {
        ai[i]=ai[i]+c;
    }
}

int sum(int x,int ai[])
{
    int i,sum=0;
    for(i=x;i>0;i=i-f(i))
    {
        sum=sum+ai[i];
    }
    return sum;
}
int main()
{
    fin>>N>>M;
    int i;
    for(i=1;i<=N;i++)
    {
        int val;
        fin>>val;
        update(i,val,ai,N);
    }

    for(i=1;i<=M;i++)
    {
        int digit, a,b;
        fin>>digit>>a>>b;
        if(digit == 0)
        {
            int c=-b;
            update(a,c,ai,N);
        }
        else
        {
            int a1=sum(b,ai);
            int a2=sum(a-1,ai);
            fout<<a1-a2<<"\n";
        }
    }
    fin.close();
    fout.close();
    return 0;
}