Cod sursa(job #3254404)

Utilizator CReaper1116Shang Cheng Lin CReaper1116 Data 7 noiembrie 2024 15:33:32
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<bits/stdc++.h>
#define cin fin
#define cout fout
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
typedef long long ll;
const int N = 15e4;
const int B = 500;
int v[N];
int v2[B];
int main(){
    int n,q;
    cin>>n>>q;
    for(int i = 0;i < n;i++){
        cin>>v[i];
    }
    int sqrtn = (int)sqrt(n);
    for(int i = 0;i < n;i+=sqrtn){
        for(int j = 0;i + j < n && j < sqrtn;j++){
            v2[i/sqrtn]+=v[i + j];
        }
    }
    for(int i = 0;i < q;i++){
        int cer, a, b;
        cin>>cer>>a>>b;
        if(cer == 1){
            a--;b--;
            int x = a;
            int ans = 0;
            while(x <= b){
                if(x%sqrtn == 0 && x + sqrtn <= b + 1){
                    ans+=v2[x/sqrtn];
                    x+=sqrtn;
                }else{
                    ans+=v[x];
                    x++;
                }
            }
            cout<<ans<<'\n';
        }else{
            a--;
            v[a]-=b;
            v2[a/sqrtn]-=b;
        }
    }
    return 0;
}