Pagini recente » Cod sursa (job #2374372) | Cod sursa (job #1186840) | Cod sursa (job #2396503) | Cod sursa (job #1757779) | Cod sursa (job #1434985)
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <utility>
#include <string>
#include <cstring>
#include <cctype>
#include <math.h>
#include <cstdio>
#include <cstdlib>
#include <limits>
#include <sstream>
#include <deque>
#include <bitset>
#include <complex>
#include <functional>
#include <memory>
#include <numeric>
//#define x first
#define y second
typedef std::pair<int, int> pii;
using namespace std;
int a, b, x[15006], y[1000000], val, poz, m, lax;
int start, finish;
void update(int nod, int st, int dr)
{
if(st == dr)
{
y[nod] = val;
return ;
}
int m = (st + dr) / 2;
if(poz <= m)
update(2 * nod, st, m);
else
update(2 * nod + 1, m + 1, dr);
y[nod] = y[nod * 2] + y[nod * 2 + 1];
}
void minmax(int nod, int st, int dr)
{
if(start <= st && finish >= dr)
{
lax += y[nod];
return;
}
int m = (st + dr) / 2;
if(start <= m)
minmax(2 * nod, st, m);
if(m < finish)
minmax(2 * nod + 1, m + 1, dr);
}
int main () {
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int v, n;
cin >> n >> m;
for(int i = 1; i <= n; i++)
{
cin >> x[i];
val = x[i];
poz = i;
update(1, 1, n);
}
int h;
for(int i = 0; i < m; i++)
{
lax = 0;
cin >> h >> a >> b;
if(h == 1)
{
start = a;
finish = b;
minmax(1, 1, n);
cout << lax << "\n";
}
else
{
poz = a;
val = x[a] - b;
update(1, 1, n);
}
}
// for(int i = 0; i < 100; i++)
//cout << y[i] << " ";
return 0;
}