diff --git a/.gitignore b/.gitignore index 378eac2..cddf16a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -build +* +!*/ +!*.cpp +!.gitignore diff --git a/2017/phase3/arranhaceu.cpp b/2017/phase3/arranhaceu.cpp new file mode 100644 index 0000000..a38e9b3 --- /dev/null +++ b/2017/phase3/arranhaceu.cpp @@ -0,0 +1,117 @@ +#include + +using namespace std; + +#define V vector + +#define rmin(a, b) a = min(a, b) +#define rmax(a, b) a = max(a, b) + +#define rep(i, lim) for (size_t i = 0; i < (lim); i++) +#define nrep(i, s, lim) for (size_t i = s; i < (lim); i++) + +#define repv(i, v) for (auto &i : (v)) +#define fillv(v) for (auto &itr_ : (v)) { cin >> itr_; } +#define sortv(v) sort(v.begin(), v.end()) +#define all(v) (v).begin(), (v).end() + +using vi = vector; +using vvi = vector; +using vvvi = vector; +using vvvvi = vector; + +using ll = long long; + +using vl = vector; +using vvl = vector; +using vvvl = vector; +using vvvvl = vector; + +template +auto operator<<(ostream &os, const vector &vec)->ostream& { + os << vec[0]; + for (size_t i = 1; i < vec.size(); i++) { + os << ' ' << vec[i]; + } + os << '\n'; + return os; +} + +template +auto operator>>(istream &is, vector &vec)->istream& { + for (auto &i : vec) { + is >> i; + } + return is; +} + +template +auto operator<<(ostream &os, const vector> &vec)->ostream& { + for (auto &i : vec) { + os << i[0]; + for (size_t j = 1; j < i.size(); j++) { + os << ' ' << i[j]; + } + os << '\n'; + } + return os; +} + +template +auto operator>>(istream &is, vector> &vec)->istream& { + for (auto &i : vec) { + for (auto &j : i) { + is >> j; + } + } + return is; +} + +void add(int i, int v, vl &bit) +{ + for (; i < bit.size(); i += (i & -i)) { + bit[i] += v; + } +} + +ll sum(int i, vl &bit) +{ + ll sum = 0; + for (; i > 0; i -= (i & -i)) { + sum += bit[i]; + } + return sum; +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + int n, q; + cin >> n >> q; + + vl a(n); + vl bit(n + 1, 0); + cin >> a; + for (size_t i = 0; i < n; i++) { + add(i + 1, a[i], bit); + } + + while (q--) { + int c; + cin >> c; + if (c) { + int k; + cin >> k; + cout << sum(k, bit) << '\n'; + } else { + int i, v; + cin >> i >> v; + int prev = a[i - 1]; + a[i - 1] = v; + add(i, v, bit); + add(i, -prev, bit); + } + } +} diff --git a/phase3/2021/falha.cpp b/2021/phase3/falha.cpp similarity index 100% rename from phase3/2021/falha.cpp rename to 2021/phase3/falha.cpp diff --git a/phase3/2021/ogro.cpp b/2021/phase3/ogro.cpp similarity index 100% rename from phase3/2021/ogro.cpp rename to 2021/phase3/ogro.cpp diff --git a/phase3/2021/teclado.cpp b/2021/phase3/teclado.cpp similarity index 100% rename from phase3/2021/teclado.cpp rename to 2021/phase3/teclado.cpp