Cod sursa(job #3268165)
| Utilizator | Data | 13 ianuarie 2025 20:04:48 | |
|---|---|---|---|
| Problema | Datorii | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.74 kb |
#include<bits/stdc++.h>
using namespace std;
int a[15001],aib[15001],n,m;
void update(int i,int j)
{
while(i<=n)
{
a[i]=max(0,a[i]-j);
i+=(i&-i);
}
}
int sum(int i)
{
int rez=0;
while(i>0)
{
rez+=a[i];
i-=(i&-i);
}
return rez;
}
int main()
{
ifstream cin("datorii.in");
ofstream cout("datorii.out");
cin>>n>>m;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
update(i,-x);
}
for(int i=1;i<=n;i++)
{
int x,y,z;
cin>>x>>y>>z;
if(x==0)
{
update(y,z);
}
else
{
cout<<sum(z)-sum(y-1)<<endl;
}
}
}
