Cod sursa(job #3292932)

Utilizator alexbaldovin20alex baldovin alexbaldovin20 Data 9 aprilie 2025 19:42:38
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <bits/stdc++.h>

using namespace std;

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

int a[15000],sumb[130],bz,bn,s,stb,drb;

void update(int poz,int val)
{
    int bn=poz/bz;
    sumb[bn]=sumb[bn]-a[poz]+val;
    a[poz]=val;
}

void query(int st,int dr)
{
    s=0;
    bn=dr/bz;
    stb=bn*bz;
    drb=(bn+1)*bz;
    if(stb>st)
    {
        while(stb>=st)
        {
            s+=a[stb];
            stb--;
        }
    }
    else if(stb<st)
    {
        while(stb<=st)
        {
            s+=a[stb];
            stb++;
        }
    }
    if(drb<dr)
    {
        while(drb<=dr)
        {
            s+=a[drb];
            drb++;
        }
    }
    else if(drb>dr)
    {
        while(drb>=dr)
        {
            s+=a[drb];
            drb--;
        }
    }
    s=s+sumb[bn];
    cout<<s<<"\n";
}

int n,m,i,op,poz,val,st,dr;
int main()
{
    cin>>n>>m;
    bz=int(sqrt(n));
    for(i=0; i<n; i++)
    {
        cin>>a[i];
        sumb[i/bz]+=a[i];
    }
    for(i=1; i<=m; i++)
    {
        cin>>op;
        if(op==0)
        {
            cin>>poz>>val;
            update(poz,val);
        }
        if(op==1)
        {
            cin>>st>>dr;
            query(st,dr);
        }
    }
    return 0;
}