Submission #1116348

#TimeUsernameProblemLanguageResultExecution timeMemory
1116348staszic_ojuzFoehn Phenomena (JOI17_foehn_phenomena)C++17
0 / 100
1053 ms4940 KiB
#include <bits/stdc++.h> using namespace std; void upd(vector<int>& tree, int w, int in, int v) { in += w; tree[in] += v; for (in /= 2; in > 0; in /= 2) { tree[in] = tree[2 * in] + tree[2 * in + 1]; } } int sum(const vector<int>& tree, int w, int left, int right) { int result = 0; left += w; right += w; while (left < right) { if (left % 2 == 1) result += tree[left++]; if (right % 2 == 1) result += tree[--right]; left /= 2; right /= 2; } return result; } int li(vector <int> domy, vector<int> v, int i) { return sum(domy, v.size(), 0, i + 1) + v[i]; } int main() { int n, q, s, t, w, l, p, va, p1, p2, l1, l2; cin >> n >> q >> s >> t; n += 1; vector<int> domy(2 * n); vector<int> v(n); for (int i = 0; i < n; i++) { cin >> v[i]; if (i > 0 && v[i - 1] < v[i]) { w -= s * (v[i] - v[i - 1]); } else if(i > 0 && v[i - 1] > v[i]) { w += t * (v[i - 1] - v[i]); } } for (int i = 0; i < q; i++) { cin >> l >> p >> va; l1 = li(domy, v, l - 1); l2 = li(domy, v, l); if (l1 < l2) { w += s * (l2 - l1); } else { w -= t * (l1 - l2); } if (p < n - 1) { p1 = li(domy, v, p); p2 = li(domy, v, p + 1); if (p1 < p2) { w += s * (p2 - p1); } else { w -= t * (p1 - p2); } } upd(domy, n, l, va); if (p < n - 1) { upd(domy, n, p + 1, -va); } l1 = li(domy, v, l - 1); l2 = li(domy, v, l); if (l1 < l2) { w -= s * (l2 - l1); } else { w += t * (l1 - l2); } if (p < n - 1) { p1 = li(domy, v, p); p2 = li(domy, v, p + 1); if (p1 < p2) { w -= s * (p2 - p1); } else { w += t * (p1 - p2); } } cout << w << endl; } }

Compilation message (stderr)

foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:50:15: warning: 'w' may be used uninitialized in this function [-Wmaybe-uninitialized]
   50 |             w -= t * (l1 - l2);
      |             ~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...