Cod sursa(job #1784777)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 20 octombrie 2016 15:03:17
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <iostream>
#include <math.h>

using namespace std;
ifstream ka("datorii.in");
ofstream ki("datorii.out");

const int N_MAX = 15000;
const int SQRT_MAX = 123;
int a, b, c, n, m, x, v[N_MAX + 1], bb[SQRT_MAX + 1];

int main()
{
   ka >> n >> m;
   int t = (int)sqrt(n) + 1;
   for(int i = 1; i <= n; i++)
   {
      ka >> x;
      v[i] = x;
      bb[i / t] += x;
   }
   for(int i = 1; i <= m; i++)
   {
      ka >> c >> a >> b;
      if(c == 1)
      {
	      long long suma = 0;
	      int j = a;
	      for(; j % t != 0 && j <= b; j++)
		suma += v[j];
	      //cout << j;
	      for(; b - j > t; j += t)
		suma += bb[j / t];
	      for(; j <= b; j++)
		suma += v[j];
	      ki << suma << '\n';
      }
      else
      {
           v[a] -= b;
           bb[a / t] -= b;
      }
   }
}