Cod sursa(job #1838811)

Utilizator vlad6001Pintilie Vlad vlad6001 Data 1 ianuarie 2017 20:19:42
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
using namespace std;

ifstream cin("datorii.in");
ofstream cout("datorii.out");

int nr, operatii, i, suma[15005], v[15005], cat, AIB[15005], yy, cod, p1, p2, c1, c2;

int zeros(int i)
{
    return (i^(i-1))&i;
}

void adauga(int ziua, int valoare)
{
    int i;

    for(i=ziua; i <= nr; i+=zeros(i))
    {
        AIB[i] += valoare;
    }
}

int intrebare(int ziua)
{
    int cat = 0;
    int i;
    for(i=ziua; i > 0; i-=zeros(i))
    {
        cat += AIB[i];
    }
    return cat;
}

int main()
{
   cin >> nr >> operatii;
   for(i=1; i <= nr; i++)
   {
       cin >> v[i];
       suma[i] = suma[i-1] + v[i];
   }
   for(i=1; i <= nr; i++)
   {
       AIB[i] = suma[i] - suma[i-zeros(i)];
   }
   //for(i=1; i <= nr; i++)
   //cout << AIB[i] << ' ';

   for(yy=1; yy <= operatii; yy++)
   {
       cin >> cod >> p1 >> p2;
       if(cod == 0)
       {
            adauga(p1, -p2);
       }
       else
       {
           c1 = intrebare(p1-1);
           c2 = intrebare(p2);
           cout << c2-c1 << '\n';
       }
   }
}