Cod sursa(job #1695438)

Utilizator ZanoxNonea Victor Zanox Data 27 aprilie 2016 09:45:07
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream>
#include <iostream>

#define size 3

using namespace std;

fstream f,g;

int d[15001],qt,t,v,p,q,n,m,i,j,k,l,o;

int main()
{
    f.open("datorii.in",ios_base::in);
    g.open("datorii.out",ios_base::out);
    f>>n>>m;
    for(k=n/size+!!(n%size),i=0;i<k;i++)for(j=1;j<=size;j++)
    {
        if(i*size+j<=n)f>>l;
        else l=0;
        d[i*size+j]=l;
        if(j!=1)d[i*size+j]+=d[i*size+j-1];
    }
    for(i=0;i<m;i++)
    {
        f>>qt;
        if(qt==0)
        {
            f>>t>>v;
            if(t%size==1)
            {
                d[t]-=v;
                t++;
            }
            for(j=t;j%size!=1;j++)d[j]-=v;
        }
        else
        {
            f>>p>>q;
            if(p/size+!!(p%size)!=q/size+!!(q%size))
            {
            o=0;
            if(p%size!=1)
            {
                o+=d[(p/size+!!(p%size))*size]-d[p-1];
                p=(p/size+!!(p%size))*size+1;
            }
            if(q%size!=0)
            {
                o+=d[q];
                q=q/size*size;
            }
            for(j=p+size-1;j<=q;j+=size)o+=d[j];
            }
            else
            {
                if(p%size==1)o=d[q];
                else o=d[q]-d[p-1];
            }
            g<<o<<'\n';
        }
    }
}