Cod sursa(job #2924170)

Utilizator Laurentiu_BTarabic Laurentiu Gabriel Laurentiu_B Data 26 septembrie 2022 18:06:24
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<iostream>
#include<fstream>
using namespace std;
int a[15010],n;
void update(int i,int v)
{
 while(i<=n)
 {
     if(v<a[i]||v<0)
  a[i]-=v;
  else
    a[i]=0;
  i+=(i&-i);
 }
}
int sum(int i)
{
 int suma=0;
 while(i>0)
 {
   suma+=a[i];
   i-=(i&-i);
 }
 return suma;
}
int main()
{
 ifstream f("datorii.in");
 ofstream g("datorii.out");
 int m,x,y,z;
 f>>n>>m;
 for(int i=1;i<=n;i++)
 {
     f>>x;
     update(i,-x);
 }
    for(int i=0;i<m;i++)
    {
        f>>x>>y>>z;
        if(x==0)
            update(y,z);
        if(x==1)
           g<<sum(z)-sum(y-1)<<endl;
    }
}