Cod sursa(job #1076969)

Utilizator NitaMihaitavoidcube NitaMihaita Data 10 ianuarie 2014 19:29:05
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream>
#include<cmath>
using namespace std;
int v[15001],bb[125];
int main()
{
    ifstream f("datorii.in");
    ofstream g("datorii.out");
    int n,i,j,k,sum,m,l,nrz,op,edd;
    f>>n>>m;
    l=sqrt(n+1);
    nrz=n/l;
    if(n%l!=0)++nrz;
    for(i=0;i<n;++i)
    {
        f>>v[i];
        bb[i/l]+=v[i];
    }
    for(;m;--m)
    {
        f>>op>>i>>j;
        if(op==0)
        {
            v[--i]-=j;
            bb[i/l]-=j;
        }
        else
        {
            --i;
            --j;
            sum=0;
            if(i==0)edd=0;
            else edd=((i-1)/l+1)*l;

            for(k=i;k<edd;++k)
                sum+=v[k];
            k=i/l;
            if(i%l!=0) ++k;
            edd=j/l;
            if((j+1)%l!=0)--edd;

            for(;k<=edd;++k) sum+=bb[k];

            if((j+1)%l!=0)
                for(k=j/l*l;k<=j;++k) sum+=v[k];

            g<<sum<<"\n";
        }
    }
    f.close();
    g.close();
    return 0;
}