Pagini recente » Cod sursa (job #1617533) | Cod sursa (job #155660) | Cod sursa (job #879895) | Cod sursa (job #2226883) | Cod sursa (job #35516)
Cod sursa(job #35516)
#include <fstream>
#define MAX 15001
using namespace std;
int m, n;
int a[MAX];
void add(int x, int v);
void pay(int x, int v);
int sum(int x);
int bit(int x);
int main()
{
int i, x, v, v1, v2, s1 = 0, s2 = 0, c;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
fin >> n >> m;
for (i = 1; i <= n; i++)
a[i] = 0;
for (i = 1; i <= n; i++)
{
fin >> c;
add(i, c);
}
for (i = 1; i <= m; i++)
{
fin >> c;
if (c == 0)
{
fin >> x >> v;
pay(x, v);
}
if (c == 1)
{
fin >> v1 >> v2;
s1 = sum(v2);
if (v1 != 1)
{
s2 = sum(v1-1);
fout << s1-s2 << "\n";
}
else
{
fout << s1 << "\n";
}
}
}
fin.close();
fout.close();
return 0;
}
void add(int x, int v)
{
int i;
for (i = x; i <= n; i += bit(i))
a[i] += v;
}
void pay(int x, int v)
{
int i;
for (i = x; i <= n; i += bit(i))
a[i] -= v;
}
int sum(int x)
{
int s = 0, i;
for (i = x; i > 0; i -= bit(i))
s += a[i];
return s;
}
int bit(int x)
{
return (x&(x-1))^x;
}