Cod sursa(job #2619964)

Utilizator STEFAN-ZOTAZota Stefan-Daniel STEFAN-ZOTA Data 28 mai 2020 14:49:28
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n, m, a[200001], i, j, idx, val, ziua, bonus, command, suma, l, r;

int main()
{
    f>>n>>m;
    int a[n*2];

    for(i = n; i < n*2; i++)
        f>>a[i];

    for(i = n-1; i >= 1; i--)
        a[i] = a[i * 2] + a[i * 2 + 1];


    for(i = 1; i <= m; i++){

        f>>command;
        switch(command)
        {
        case 1:
            {
                f>>l>>r;
                l += n-1;
                r += n;
                suma = 0;
                while(l < r){
                    if(l % 2 != 0){
                        suma += a[l];
                        l++;
                    }
                    if(r % 2 != 0){
                        r--;
                        suma += a[r];
                    }
                    l = l / 2;
                    r = r / 2;
                }
                g<<suma<<"\n";
                break;
            }

        case 0:
            {
                f>>ziua>>val;
                ziua += n-1;
                a[ziua] -= val;
                while(ziua > 1){
                    ziua = ziua / 2;
                    a[ziua] = a[ziua * 2] + a[ziua * 2 + 1];
                }
                break;
            }
        default:
            break;
        }
    }
    return 0;
}