Cod sursa(job #1695276)

Utilizator ZanoxNonea Victor Zanox Data 26 aprilie 2016 21:06:38
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>

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/100+!!(n%100),i=0;i<k;i++)for(j=1;j<=100;j++)
    {
        if(i*100+j<=n)f>>l;
        else l=0;
        d[i*100+j]=l;
        if(j!=1)d[i*100+j]+=d[i*100+j-1];
    }
    for(i=0;i<m;i++)
    {
        f>>qt;
        if(qt==0)
        {
            f>>t>>v;
            if(t%100==1)d[t]-=v;
            else for(j=t;j%100!=1;j++)d[j]-=v;
        }
        else
        {
            f>>p>>q;
            if(p/100!=q/100)
            {
            o=0;
            if(p%100!=1)
            {
                o+=d[(p/100+1)*100]-d[p-1];
                p=(p/100+1)*100+1;
            }
            if(q%100!=0)
            {
                o+=d[q];
                q=q/100*100;
            }
            for(j=p+99;j<=q;j+=100)o+=d[j];
            }
            else
            {
                if(p%100==1)o=d[q];
                else o=d[q]-d[p-1];
            }
            g<<o<<'\n';
        }
    }
}