Cod sursa(job #2424044)
Utilizator | Data | 22 mai 2019 15:45:48 | |
---|---|---|---|
Problema | Datorii | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 2 kb |
#include <std/c++.h>
int c[20000], v[20000], n, m, i, j;
void chng(int index, int val, char ok)
{
int p1, p2;
p1 = 0;
p2 = 1;
while (indx <= n)
{
if (ok == '+')
c[index] += val;
else
c[index] -= val;
while ((index & put) == 0)
{
p1++;
p2 *= 2;
}
ind += p2;
}
}
int sum(int st, int dr)
{
int s1, s2, p1, p2;
s1 = 0;
p1 = 0;
p2 = 1;
while (dr > 0)
{
s1 += c[dr];
while ((dr & p2) == 0)
{
p1++;
p2 *= 2;
}
dr -= p2;
}
s2 = 0;
p1 = 0;
p2 = 1; st--;
while (st > 0)
{
s2 += c[st];
while ((st & p2) == 0)
{
p1++;
p2 *= 2;
}
st -= p2;
}
return s1-s2;
}
int main()
{
ifstream cin("datorii.in");
ofstream cout("datorii.out");
cin >> n >> m;
for (i=1; i<=n; i++)
{
cin >> v[i];
chng(i, v[i], '+');
}
int x, a, b;
for (j=1; j<=m; j++)
{
cin >> x;
if (x == 1)
{
cin >> a >> b;
cout << sum(a, b) << '\n';
}
else
{
cin >> a >> b;
chng(a, b, '-');
}
}
return 0;
}