Cod sursa(job #2680100)
Utilizator | Data | 2 decembrie 2020 17:26:34 | |
---|---|---|---|
Problema | Datorii | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <fstream>
using namespace std;
ifstream in(fisier "datorii.in");
ofstream out(fisier "datorii.out");
int V[20002];
int S(int i) {return i? V[i] + S(i^i&-i): 0;}
int main()
{
int n, m; in >> n >> m;
for (int i = 1; i <= n; i++)
{int e; in >> e; V[i+(i&-i)] += V[i] += e;}
while (m--)
{
bool v; int a, b; in >> v >> a >> b;
if (v) out << S(b) - S(a-1) << '\n';
else for (; a <= n; a += a&-a) V[a] -= b;
}
}