Cod sursa(job #2942555)

Utilizator vtvtvtvtvtvtvtvt vtvtvtvt Data 19 noiembrie 2022 21:01:39
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <cmath>
#include <fstream>

using namespace std;

ifstream in("aib.in");
ofstream out("aib.out");

#define ub(x) (x&(-x))

const int f=2e+5;
int aib[f],aib2[f];

void add(int poz,int val)
{
    aib[poz]+=val;
}

int sum(int a,int b)
{
    int s=0;
    for (int i=a;i<=b;i++)
    {
        s+=aib[i];
    }
    return s;
}

int sumpoz(int a)
{
    int poz=1;
    while (sum(1,poz)<a)
    {
        poz++;
    }
    return poz;
}

int main()
{
    int n,intact,cer,ceract,v1,v2;
    in >> n >> cer;
    for (int i=1;i<=n;i++)
    {
        in >> intact;
        aib[i]=intact;
        for (int j=i-ub(i)+1;j<=i;j++)
        {
            aib2[i]+=aib[j];
        }
    }
    while (cer--)
    {
        in >> ceract;
        if (ceract == 0)
        {
            in >> v1 >> v2;
            add(v1,v2);
        }
        else if (ceract == 1)
        {
            in >> v1 >> v2;
            out << sum(v1,v2);
            out << "\n";
        }
        else if (ceract ==2)
        {
            in >> v1;
            out << sumpoz(v1);
            out << "\n";
        }
    }

}