Pagini recente » Cod sursa (job #2738694) | Cod sursa (job #286370) | Cod sursa (job #2956198) | Cod sursa (job #2926348) | Cod sursa (job #1708459)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#include <vector>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int N,M;
vector<int> aib(15000,0);
void update(int val, int x)
{
do
{
aib[x]+=val;
x+= x&(-x);
}
while(x<=N);
}
int query(int x)
{
int suma=0;
while(x!=0)
{
suma+=aib[x];
x-=x&(-x);
}
return suma;
}
int main()
{
f>>N>>M;
int p,x,y;
for(int i=1; i<=N; ++i)
{
f>>x;
update(x,i);
}
for(int i=1; i<=M; ++i)
{
f>>p>>x>>y;
if(p==0)
{ //ziua valoarea
update(-y,x); //valoare pozitie
}
else
{
g<<query(y)-query(x-1)<<"\n";
}
}
return 0;
}