Cod sursa(job #1036443)

Utilizator WyvernFMI Stanescu Leonard Wyvern Data 19 noiembrie 2013 13:17:00
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fi("datorii.in");
ofstream fo("datorii.out");
int v[15002],w[15002],n,m,x,y,z;

int main()
{
    fi>>n>>m;
    int r=sqrt(n);
    for (int i=1;i<=n;i++) {
        fi>>v[i];
        if ((i/r+1)*r!=i)
            w[(i+1)/r]+=v[i];
        else
            w[i/r]+=v[i];
    }
    for (int i=1;i<=m;i++) {
        fi>>x>>y>>z;
        if (x==0) {
            v[y]-=z;
            w[y/r]-=z;
        }
        else {
            int s=0;
            while ((y-1)%r!=0) {
                s+=v[y];
                y++;
            }
            while ((y/r+1)*r<=z) {
                s+=w[y/r+1];
                y+=r;
            }
            while (y<=z) {
                s+=v[y];
                y++;
            }
            fo<<s<<'\n';
        }
    }
    return 0;
}