Cod sursa(job #381796)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 11 ianuarie 2010 17:27:58
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include<fstream>
#define o(x) ((x^(x-1))&x)
#define MaxN 15005
#define MaxM 100005
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int arb[MaxN],n,m;
void plus(int x, int v)
{for(;x<=n;x+=o(x))
   arb[x]+=v;}
int qy(int x)
{int s=0;
for(;x;x-=o(x)) s+=arb[x];
  return s;}
int main()
{int i,val,op,a,b;
fin>>n>>m;
for(i=1;i<=n;i++)
  {fin>>val;
  plus(i,val);}
for(i=1;i<=m;i++)
  {fin>>op;
  if(op==0)
   {fin>>a>>b;
   plus(a,-b);}
  if(op==1)
   {fin>>a>>b;
   fout<<qy(b)-qy(a-1)<<'\n';}}
return 0;}