Pagini recente » Cod sursa (job #31045) | Cod sursa (job #61871) | Cod sursa (job #3252318)
#include <fstream>
#include <math.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int v[15005], v_r[130], rad;
void update(int poz, int val)
{
v[poz] -= val;
v_r[poz/rad] -= val;
}
void sum(int st, int dr)
{
long long suma = 0;
while(st % rad != 0)
{
suma += (long long) v[st];
st++;
}
while((dr - 1) % rad != 0)
{
suma += (long long) v[dr];
dr--;
}
while(st < dr)
{
suma += (long long) v_r[st/rad];
st += rad;
}
out << (long long) suma << '\n';
}
int main()
{
bool cerinta;
int n, m, i, a, b;
in >> n >> m;
rad = (int) sqrt(n);
for(i = 0; i < n; i++)
{
in >> v[i];
v_r[i/rad] += v[i];
}
for(i = 1; i <= m; i++)
{
in >> cerinta >> a >> b;
if(cerinta == 0)
{
update(a - 1, b);
} else
{
sum(a - 1, b - 1);
}
}
return 0;
}