Cod sursa(job #3252333)

Utilizator Ilinca_Radu_2022Radu Ilinca-Rucsandra Ilinca_Radu_2022 Data 29 octombrie 2024 11:09:37
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m, i, k, s[125], a[15005], j, x, y, c, stk, stp, drk, drp, ans, lg;
int main()
{
    fin>>n>>m;
    for (i=1; i<=n; i++) fin>>a[i];
    k=int(sqrt(n))+1;
    for (i=1; i<=k-1; i++) {
        s[i]=0;
        for (j=1; j<=k; j++) {
            s[i]+=a[(i-1)*k+j];
        }
    }
    for (i=k*(k-1)+1; i<=n; i++) s[k]+=a[i];
    if (n%k!=0) lg++;
    for (i=1; i<=m; i++) {
        fin>>c>>x>>y;
        if (c==0) {
            if (x%k==0) s[x/k]-=y;
            else s[x/k+1]-=y;
            a[x]-=y;
        }
        else {
            stk=(x+k-1)/k;
            if (x%k==0) stk++;
            drk=(y+k-1)/k;
            if (y%k==1) drk--;
            ans=0;
            while (x%k!=1) {
                ans+=a[x];
                x++;
            }
            while (y%k!=0) {
                ans+=a[y];
                y--;
            }
            for (j=stk; j<=drk; j++) ans+=s[j];
            fout<<ans<<'\n';
        }
    }
    return 0;
}