Pagini recente » Cod sursa (job #2455451) | Cod sursa (job #1176489) | ONIS 2014, Clasament | Cod sursa (job #1636032) | Cod sursa (job #3252291)
#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] -= min(val, v[i]);
b[i/rad] -= min(val, v[i]);
}
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;
}