Pagini recente » Cod sursa (job #1867891) | Cod sursa (job #1238432) | Cod sursa (job #2436712) | Cod sursa (job #1464060) | Cod sursa (job #2355803)
#include <iostream>
#include <fstream>
#define NMAX 15005
std::ifstream in("datorii.in");
std::ofstream out("datorii.out");
using namespace std;
int sir[NMAX];
int AIB[NMAX];
int N,teste;
void schimbare(int poz , int suma)
{
for(int i = poz ; i<=N; i += (i)&(-i))
AIB[i] -= suma;
}
int suma_curenta(int poz)
{
int sol = 0;
for(int i = poz ; i> 0 ; i -= (i)&(-i))
sol +=AIB[i];
return sol;
}
int main()
{
in>>N>>teste;
for(int i = 1; i<=N ; i++ )
{
in>>sir[i];
}
for(int i=1 ; i<=N ;i++)
{
///AIB[i] = sir[i];
for(int j = i ; j <= N; j += (j)&(-j) )
{
AIB[j] += sir[i];
}
}
for(int i = 1 ;i<=teste ; i++)
{
bool numar;
in>>numar;
if(numar == 1)
{
int a , b;
in>>a>>b;
out<<suma_curenta(b) - suma_curenta(a-1)<<"\n";
}
else
{
int poz , scad ;
in>>poz>>scad;
schimbare(poz,scad);
}
}
return 0;
}