Pagini recente » Istoria paginii runda/concurs_2014/clasament | Cod sursa (job #3204128) | Cod sursa (job #554255) | Cod sursa (job #1670179) | Cod sursa (job #1425414)
#include <cstdio>
#include <fstream>
#define nmax 16005
#define ub(x) (x&(-x))
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int v[nmax],a[nmax],n,m;
int sum(int p)
{
int i,s=0;
for (i=p;i>=1;i-=ub(i))
s+=a[i];
return s;
}
void take(int p,int val)
{
int i;
for (i=p;i<=n;i+=ub(i))
a[i]-=val;
}
int main()
{
int i,j,x,y,op;
f>>n>>m;
for (i=1;i<=n;i++)
f>>v[i];
for (i=1;i<=n;i++)
for (j=i-ub(i)+1;j<=i;j++)
a[i]+=v[j];
for (i=1;i<=m;i++) {
f>>op>>x>>y;
if (op==0)
take(x,y);
else
g<<sum(y)-sum(x-1)<<'\n';
}
return 0;
}