Pagini recente » Cod sursa (job #837476) | Cod sursa (job #1607784) | Cod sursa (job #573514) | Cod sursa (job #2955630) | Cod sursa (job #880982)
Cod sursa(job #880982)
#include <fstream>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <string.h>
#include <vector>
using namespace std;
int n, v[20000];
void add(int poz, int val)
{
while(poz <= n)
{
v[poz] += val;
poz += (poz^(poz-1))&poz;
}
}
int query(int poz)
{
int sum = 0;
while(poz >= 1)
{
sum += v[poz];
poz -= (poz^(poz-1))&poz;
}
return sum;
}
int main()
{
FILE *fin=fopen("datorii.in","r");
FILE *fout=fopen("datorii.out","w");
int i, m, tip, a, b, aux;
//Read
fscanf(fin,"%d %d",&n,&m);
for(i=1; i<=n; i++)
{
fscanf(fin,"%d",&aux);
add(i,aux);
}
//Compute
for(i=1; i<=m; i++)
{
fscanf(fin,"%d %d %d \n",&tip,&a,&b);
if(tip == 0)
add(b,-a);
else
fprintf(fout,"%d \n",query(b)-query(a-1));
}
}