Cod sursa(job #2924170)
| Utilizator | Data | 26 septembrie 2022 18:06:24 | |
|---|---|---|---|
| Problema | Datorii | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include<iostream>
#include<fstream>
using namespace std;
int a[15010],n;
void update(int i,int v)
{
while(i<=n)
{
if(v<a[i]||v<0)
a[i]-=v;
else
a[i]=0;
i+=(i&-i);
}
}
int sum(int i)
{
int suma=0;
while(i>0)
{
suma+=a[i];
i-=(i&-i);
}
return suma;
}
int main()
{
ifstream f("datorii.in");
ofstream g("datorii.out");
int m,x,y,z;
f>>n>>m;
for(int i=1;i<=n;i++)
{
f>>x;
update(i,-x);
}
for(int i=0;i<m;i++)
{
f>>x>>y>>z;
if(x==0)
update(y,z);
if(x==1)
g<<sum(z)-sum(y-1)<<endl;
}
}
