Cod sursa(job #2899349)

Utilizator ClaudiuChelceaClaudiuChelcea ClaudiuChelcea Data 8 mai 2022 16:16:38
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb

#include <stdio.h>

int a[20000], c[20000], n, m, i, j, k, w, p, q, s1, s2;

int
main ()
{
  FILE *fin, *fout;

  fin = fopen ("datorii.in", "r");
  fout = fopen ("datorii.out", "w");
  fscanf (fin, "%d %d", &n, &m);
  for (i = 1; i <= n; i++)
    {
      fscanf (fin, "%d", &a[i]);
      c[i] = 0;
      k = i & (i ^ (i - 1));
      for (j = i - k + 1; j <= i; j++)
        c[i] += a[j];
    }
  for (i = 1; i <= m; i++)
    {
      fscanf (fin, "%d %d %d", &w, &p, &q);
      if (w == 0)
        while (p <= n)
          {
            c[p] = c[p] - q;
            k = p & (p ^ (p - 1));
            p = p + k;
          }
      else
        {
          s1 = 0;
          while (q > 0)
            {
              s1 += c[q];
              k = q & (q ^ (q - 1));
              q = q - k;
            }
          s2 = 0;
          p--;
          while (p > 0)
            {
              s2 += c[p];
              k = p & (p ^ (p - 1));
              p = p - k;
            }
          fprintf (fout, "%d\n", s1 - s2);
        }
    }

  fclose (fin);
  fclose (fout);

  return 0;
}