Submission #1195209

#TimeUsernameProblemLanguageResultExecution timeMemory
1195209madamadam3Distributing Candies (IOI21_candies)C++20
0 / 100
62 ms8332 KiB
#include "candies.h" #include <bits/stdc++.h> using namespace std; #define all(x) (x).begin(), (x).end() #define FOR(i, a, b) for (int i = a; i < b; i++) #define each(a, x) for (auto &x : a) #define srt(x) sort(all(x)) #define sz(x) (int) (x).size() #define pb push_back #define trace(x) for (auto &el : x) cout << el << " " using pi = pair<int, int>; using vi = vector<int>; using vpi = vector<pi>; struct Fenw { int n; vi bit; Fenw(int n) { this->n = n; bit.assign(n, 0); } int g(int i) { return i & (i + 1); } int h(int i) { return i | (i + 1); } void update_point(int r, int delta) { while (r < n) { bit[r] += delta; r = h(r); } } void update_range(int l, int r, int delta) { update_point(l, delta); update_point(r + 1, -delta); } int query(int idx) { int res = 0; while (idx >= 0) { res += bit[idx]; idx = g(idx); } return res; } }; vi distribute_candies(vi c, vi l, vi r, vi v) { int n = sz(c); int q = sz(r); vi s(n); // FOR(j, 0, q) { // FOR(i, l[j], r[j] + 1) { // s[i] = v[j] > 0 ? min(c[i], s[i] + v[j]) : max(0, s[i] + v[j]); // } // } vi difference(n + 1, 0); FOR(j, 0, q) { difference[l[j]] += v[j]; difference[r[j] + 1] -= v[j]; } FOR(i, 1, n + 1) { difference[i] += difference[i - 1]; } // trace(difference); cout << "\n"; FOR(i, 0, n) { s[i] = min(c[i], difference[i]); } // auto fenw = Fenw(n); // FOR(j, 0, q) { // fenw.update_range(l[j], r[j]+1, v[j]); // } // FOR(i, 0, n) { // s[i] = min(c[i], fenw.query(i)); // } return s; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...