Cod sursa(job #3173524)
| Utilizator | Data | 22 noiembrie 2023 23:51:13 | |
|---|---|---|---|
| Problema | Datorii | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1 kb |
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define MOD 1000000007
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int k;
int n,m;
int a[16001];
int main()
{
fin >> n >> m;
for(int i=1;i<=n;i++)
{
fin >> a[i];
}
for(int i=1;i<=n;i++)
{
if(i+(i&-i) <= n)
{
a[i+(i&-i)]+=a[i];
}
}
while(m--)
{
int x;
fin >> x;
if(!x)
{
int t,v;
fin >>t >> v;
for(int i=t;i<=n;i+=(i&-i))
{
a[i]-=v;
}
}
else
{
int l,r;
fin >> l >> r;
int res=0;
for(int i=r;i>=1;i-=(i&-i))
{
res += a[i];
}
for(int i=l-1;i>=1;i-=(i&-i))
{
res -= a[i];
}
fout << res << '\n';
}
}
}
