Cod sursa(job #3328699)

Utilizator coajatudorCoaja Tudor coajatudor Data 9 decembrie 2025 17:53:09
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <cmath>

using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");

int v[15001], batog[125];

int main()
{
    int n, m, nr, i, tp, s=0, a, b, j;
    cin>>n>>m;
    nr=sqrt(n);
    /// citire
    for(i=0; i<n; i++){
        cin>>v[i];
        batog[i/nr]=batog[i/nr]+v[i];
    }
    /// query
    for(i=1; i<=m; i++){
        cin>>tp>>a>>b;
        a--;
        /*cout<<"***"<<endl;
        cout<<tp<<" "<<a<<" "<<b<<endl;
        for(j=0; j<n; j++){
            cout<<v[j]<<" ";
        }
        cout<<endl;
        for(j=0; j<=nr; j++){
            cout<<batog[j]<<" ";
        }
        cout<<endl<<"---";*/
        if(tp==0){
            ///modificare
            v[a]=v[a]-b;
            batog[a/nr]=batog[a/nr]-b;

        }
        else if(tp==1){
            ///verificare
            b--;
            s=0;
            while(a%nr!=0&&a<=b){
                s=s+v[a];
                a++;
            }
            while(a+nr<b){
                s=s+batog[a/nr];
                a=a+nr;
            }
            while(a<=b){
                s=s+v[a];
                a++;
            }
            cout<<s<<endl;
        }
    }

    return 0;
}