Cod sursa(job #2564770)

Utilizator dragossofiaSofia Dragos dragossofia Data 2 martie 2020 10:14:02
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
#define Nmax 15001

using namespace std;

int AIB[ Nmax ], n , m ;
ifstream fin ("datorii.in");
ofstream fout("datorii.out");

void update ( int poz , int val )
{
  while ( poz <= n )
    {
     AIB[ poz ] += val;
     poz += ( poz & ( - poz ) ) ;
    }
}
int query( int poz )
{
 int sum = 0 ;
 while ( poz )
    {
     sum += AIB[ poz ];
     poz -= ( poz & ( - poz ) );
    }
 return sum;
}

void read ( )
{
 int x,task,a,b ;
 fin >> n >> m ;
 for( int i = 1 ; i <= n ; i++ )
    {
     fin >> x ;
     update( i , x );
    }
  for( int i = 1 ; i <= m ; i++ )
    {
     fin >> task ;
     if ( task == 0 )
        {
         fin >> a >> b;
         update ( a , -b )   ;
        }
    else
        {
         fin >> a >> b ;
         fout << query ( b ) - query( a - 1 ) << " \n" ;
        }
    }
}
int main()
{
    read();
    return 0;
}