Cod sursa(job #3282391)

Utilizator Radu_Stefan2010Radu Loga Radu_Stefan2010 Data 5 martie 2025 14:51:22
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int n,i,x,q,qq,t,st,dr,stt,drr,k,poz,b[100002],a[100001];
int main()
{
    in>>n>>qq;
    q=int(sqrt(n));
    for(int i=1; i<=n; i++)
    {
        in>>a[i];
        k=i/q+1;
        if(i%q==0)
            k--;
        b[k]+=a[i];
    }
    for(int i=1; i<=qq; i++)
    {
        in>>t;
        if(t==0)
        {
            in>>poz>>x;
            a[poz]-=x;
            k=poz/q+1;
            if(poz%q==0)
                k--;
            b[k]-=x;
        }
        else
        {
            in>>st>>dr;
            if(dr-st+1<3*q)
            {
                int sum=0;
                for(int j=st; j<=dr; j++)
                    sum+=a[j];
                out<<sum<<'\n';
            }
            else
            {
                k=st/q+1;
                if(st%q==0)
                    k--;
                stt=k+1;
                k=dr/q+1;
                if(dr%q==0)
                    k--;
                drr=k-1;
                int sum=0;
                for(int j=stt; j<=drr; j++)
                    sum+=b[j];
                for(int j=st; j<=(stt-1)*q; j++)
                    sum+=a[j];
                for(int j=drr*q+1; j<=dr; j++)
                    sum+=a[j];
                out<<sum<<'\n';
            }
        }
    }
    return 0;
}