Cod sursa(job #1207595)

Utilizator mihaimusatMihai Musat mihaimusat Data 13 iulie 2014 14:26:49
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>
#define ub(x) (x&(-x))

using namespace std;

int key,x,y,AIB[20001],i,n,m;

void add(int poz,int x)
{
   int i;
   for(i=poz;i<=n;i+=ub(i))
       AIB[i]+=x;
}

int sum(int poz)
{
  int i,s=0;
  for(i=poz;i>0;i-=ub(i))
     s+=AIB[i];
  return s;
}
int main()
{
    ifstream f("datorii.in");
    ofstream g("datorii.out");
    f>>n>>m;
    for (i=1;i<=n;i++) f>>x,add(i,x);
    for (i=1;i<=m;i++)
    {
        f>>key>>x>>y;
        if (key==0)
           add(x,-y);
        if (key==1)
           g<<sum(y)-sum(x-1)<<'\n';
    }
    return 0;
}