Advertisement
a53

livada2

a53
Jun 20th, 2022
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. #include <fstream>
  2. #include <bitset>
  3. using namespace std;
  4.  
  5. const int NMAX = 1e6 + 1;
  6.  
  7. long long m[NMAX], aux[NMAX];
  8.  
  9. int Left[NMAX], Right[NMAX], n, q, k, c, x, y, p;
  10.  
  11. bitset <NMAX> ok;
  12.  
  13. ifstream fin("livada2.in");
  14. ofstream fout("livada2.out");
  15.  
  16. int main()
  17. {
  18. fin >> n;
  19.  
  20. for (int i = 1; i <= n; ++i)
  21. fin >> m[i];
  22.  
  23. int lastIndex = 0;
  24.  
  25. for (int i = 1; i <= n; ++i)
  26. {
  27. fin >> k;
  28. ok[i] = k;
  29.  
  30. if (ok[i])
  31. lastIndex = i;
  32.  
  33. Left[i] = lastIndex;
  34. }
  35.  
  36. lastIndex = 0;
  37.  
  38. for (int i = n; i >= 1; --i)
  39. {
  40. if (ok[i])
  41. lastIndex = i;
  42.  
  43. Right[i] = lastIndex;
  44. }
  45.  
  46. fin >> q;
  47. while (q--)
  48. {
  49. fin >> c >> x >> y >> p;
  50.  
  51. if (c == 1)
  52. {
  53. if (Right[y])
  54. y = Right[y];
  55. }
  56.  
  57. if (c == 2)
  58. {
  59. p = -p;
  60. if (Left[x])
  61. x = Left[x];
  62. }
  63.  
  64. aux[x] += p;
  65. aux[y + 1] -= p;
  66. }
  67.  
  68. for (int i = 1; i <= n; ++i)
  69. {
  70. aux[i] += aux[i - 1];
  71. fout << m[i] + aux[i] << ' ';
  72. }
  73.  
  74. return 0;
  75.  
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement