Pagini recente » Cod sursa (job #1111292) | Cod sursa (job #1245109) | Cod sursa (job #1714654) | Cod sursa (job #1961427) | Cod sursa (job #3252287)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m;
int rad;
vector<int> v, b;
void Scade(int i, int val)
{
v[i] -= val;
b[i/rad] -= val;
}
int Sum(int x, int y)
{
int s = 0;
int i = x;
while(i % rad != 0)
s += v[i++];
while(i+rad <= y)
{
s += b[i/rad];
i += rad;
}
while(i <= y)
s += v[i++];
return s;
}
int main()
{
fin >> n >> m;
v.resize(n);
rad = sqrt(n);
b.resize(rad+1);
for(int i = 0; i < n; i++)
fin >> v[i];
for(int i = 0; i < n; i++)
b[i/rad] += v[i];
for(int i = 0; i < m; i++)
{
int op, x, y;
fin >> op >> x >> y;
if(op == 0)
Scade(x-1, y);
else
fout << Sum(x-1, y-1) << "\n";
}
return 0;
}