Cod sursa(job #3133349)

Utilizator z.catincaCatinca Zavoianu z.catinca Data 25 mai 2023 14:48:27
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<iostream>
#include<fstream>
using namespace std;
int n,m,a[15001],x,y,ok;
int pd[14]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192};
int z[15001];
void pun(int i,int x)
{do
    {
    a[i]=a[i]+x;
    i=i+pd[z[i]];
    }while(i<=n);
}
int sum(int x)
{
    int s=0;
    do{
        s=s+a[x];
        x=x-pd[z[x]];
    }while(x>0);
    return s;
}
int main()
{
    std::ifstream f("datorii.in");
    std::ofstream g("datorii.out");
    f>>n>>m;
    for(int i=2;i<=n;i=i+2)
    {
        for(y=0;(pd[y]&i)==0;y++);
        z[i]=y;
    }
    for(x=1;x<=n;x++)
    {
        f>>y;
        pun(x,y);
    }
    for(;m;m--)
    {
        f>>ok>>x>>y;
        if(ok) g<<sum(y)-sum(x-1)<<endl;
        else pun(x,-y);
    }
    return 0;
}