Cod sursa(job #1259235)

Utilizator AlexbiraianuBiraianu Alex Valentin Alexbiraianu Data 9 noiembrie 2014 20:52:17
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<fstream>
#include<math.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int a[15001], b[130], n, nr, r;
void act(int ziua,int val)
{
    ziua--;
    a[ziua]-=val;
    b[ziua/r]-=val;
}
void inter(int z1,int z2)
{
    int suma=0,i;
    z1--;
    z2--;
    int b1,b2;
    b1=z1/r;
    b2=z2/r;
    if(b1==b2)
        for(i=z1;i<=z2;i++)
            suma+=a[i];
    else
    {
        int x;
        x=(b1+1)*r;
        for(i=z1;i<x;i++)
            suma+=a[i];
        for(i=b1+1;i<b2;i++)
            suma+=b[i];
        x=b2*r;

        for(i=x;i<=z2;i++)
            suma+=a[i];
    }


    g<<suma<<"\n";
}
int main()
{
    int m,i;
    double k;
    f>>n>>m;
    for(i=0;i<n;i++)
        f>>a[i];
    k=n;
    k=sqrt(k);
    r=int(k);
    nr=0;
    for(i=1;i<n;i++)
        {
            if(i%r==0)
                ++nr;
            b[nr]+=a[i];
        }
    for(i=1;i<=m;i++)
    {
        int x,y,o;
        f>>o>>x>>y;
        if(o==0)
            act(x,y);
        else
            inter(x,y);
    }
    return 0;
}