Pagini recente » Cod sursa (job #3248382) | Cod sursa (job #426965) | Cod sursa (job #270650) | Cod sursa (job #2645647) | Cod sursa (job #2672473)
#include "bits/stdc++.h"
using namespace std;
int main()
{
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int n,m;
cin >> n >> m;
vector<int> v(n);
vector<int> gr;
int sc = 0;
for(int i = 0; i < n; i++) {
cin >> v[i];
if(i % 150 != 0 || i == 0) {
sc += v[i];
}
else {
gr.push_back(sc);
sc = v[i];
}
if (sc != 0 && i == (n - 1)) {
gr.push_back(sc);
}
}
for ( int e = 0 ; e < m; e++) {
int a, b, c;
cin >> a >> b >> c;
int s = 0;
if (a == 0) {
gr[(b - 1) / 150] = gr[(b - 1) / 150] - c;
v[b-1] = v[b-1] - c;
}
else {
if((b - 1) / 150 == (c - 1) / 150) {
for ( int r = b - 1 ; r <= c - 1; r++) {
s += v[r];
}
}
else {
int q = (b - 1) / 150;
int q1 = (c - 1) / 150;
if ((b - 1) % 150 != 0) {
q++;
}
if ((c - 1) % 150 == 149) {
q1++;
}
if(q != q1) {
for (int p = q; p < q1; p++) {
s += gr[p];
}
}
while ((b - 1) % 150 > 0) {
s += v[b - 1];
b++;
}
while((c - 1) % 150 >= 0 && (c - 1) % 150 != 149) {
s += v[c - 1];
c--;
}
}
cout << s << '\n';
}
}
return 0;
}