From c2a0f3e0db0ec78d26e3077a41170441ac081ebb Mon Sep 17 00:00:00 2001 From: Segcolt Date: Sat, 21 Feb 2026 13:55:51 -0300 Subject: [PATCH] More stuff --- ... Red Light, Green Light (Easy version).cpp | 189 ++++++++++++++++++ .../E. Idiot First Search.cpp | 147 ++++++++++++++ .../G. The Morning Star.cpp | 134 +++++++++++++ .../E1. Game with Marbles (Easy Version).cpp | 131 ++++++++++++ .../F. Sum of Progression.cpp | 116 +++++++++++ TODO.md | 5 + 6 files changed, 722 insertions(+) create mode 100644 Codeforces Round 1030 (Div. 2)/D1. Red Light, Green Light (Easy version).cpp create mode 100644 Codeforces Round 1080 (Div. 3)/E. Idiot First Search.cpp create mode 100644 Codeforces Round 886 (Div. 4)/G. The Morning Star.cpp create mode 100644 Codeforces Round 916 (Div. 3)/E1. Game with Marbles (Easy Version).cpp create mode 100644 Codeforces Round 920 (Div. 3)/F. Sum of Progression.cpp diff --git a/Codeforces Round 1030 (Div. 2)/D1. Red Light, Green Light (Easy version).cpp b/Codeforces Round 1030 (Div. 2)/D1. Red Light, Green Light (Easy version).cpp new file mode 100644 index 0000000..c98f727 --- /dev/null +++ b/Codeforces Round 1030 (Div. 2)/D1. Red Light, Green Light (Easy version).cpp @@ -0,0 +1,189 @@ +/* Problem URL: https://codeforces.com/problemset/problem/2118/D1 */ + +#include +#include +#include + +using namespace std; +using namespace __gnu_pbds; + +template > +using ordered_set = tree; + +#define V vector + +#define rmin(a, b) a = min(a, b) +#define rmax(a, b) a = max(a, b) + +#define rep(i, lim) for (int i = 0; i < (lim); i++) +#define nrep(i, s, lim) for (int 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; +} + +const int oo = INT32_MAX >> 1; +const ll OO = INT64_MAX >> 1; + + +void pre() +{ + +} + +#define TEST 1 + +void solve() +{ + int n, k; + cin >> n >> k; + + vl p(n); + vl d(n); + cin >> p >> d; + + V> loop(n, V(2)); + V> vis(n, V(2)); + V> frame(n, V(2)); + + function func = [&](int i, int dir, ll cur) -> bool { + if (cur % k != d[i]) { + int ne = i + 1 - 2 * dir; + if (ne < 0 || ne == n) { + return false; + } + + return func(ne, dir, (cur + abs(p[i] - p[ne])) % k); + } + + dir ^= 1; + + if (frame[i][dir]) { + frame[i][dir] = false; + loop[i][dir] = true; + return true; + } + + if (vis[i][dir]) { + return false; + } + + vis[i][dir] = true; + frame[i][dir] = true; + + int ne = i + 1 - 2 * dir; + if (ne < 0 || ne == n) { + frame[i][dir] = false; + return false; + } + bool res = func(ne, dir, (cur + abs(p[i] - p[ne])) % k); + + if (res == true) { + loop[i][dir] = true; + } + + frame[i][dir] = false; + return loop[i][dir]; + }; + + rep(i, n) { + if (!vis[i][0]) { + func(i, 1, d[i]); + } + + if (!vis[i][1]) { + func(i, 0, d[i]); + } + } + + int q; + cin >> q; + while (q--) { + ll c; + cin >> c; + + int ind = lower_bound(all(p), c) - p.begin(); + bool pos = true; + ll cur = 0; + while (ind < n) { + cur = (cur + abs(p[ind] - c)) % k; + if (cur == d[ind]) { + if (loop[ind][1]) { + pos = false; + } + break; + } + c = p[ind]; + ind++; + } + + cout << (pos ? "YES\n" : "NO\n"); + } +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + pre(); + + int t; + (TEST && cin >> t) || (t = 1); + while (t--) { + solve(); + } +} diff --git a/Codeforces Round 1080 (Div. 3)/E. Idiot First Search.cpp b/Codeforces Round 1080 (Div. 3)/E. Idiot First Search.cpp new file mode 100644 index 0000000..da966d6 --- /dev/null +++ b/Codeforces Round 1080 (Div. 3)/E. Idiot First Search.cpp @@ -0,0 +1,147 @@ +/* Problem URL: https://codeforces.com/contest/2195/problem/E */ + +#include +#include +#include + +using namespace std; +using namespace __gnu_pbds; + +template > +using ordered_set = tree; + +#define V vector + +#define rmin(a, b) a = min(a, b) +#define rmax(a, b) a = max(a, b) + +#define rep(i, lim) for (int i = 0; i < (lim); i++) +#define nrep(i, s, lim) for (int 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; +} + +const int oo = INT32_MAX >> 1; +const ll OO = INT64_MAX >> 1; + + +void pre() +{ + +} + +#define TEST 1 + +void solve() +{ + int n; + cin >> n; + + V> graph(n); + rep(i, n) { + int a, b; + cin >> a >> b; + graph[i][0] = a - 1; + graph[i][1] = b - 1; + } + + const ll mod = 1e9 + 7; + vl ans(n); + + function dfs = [&](int i) { + if (graph[i][0] == -1) { + return ans[i] = 1; + } + + return ans[i] = (dfs(graph[i][0]) + dfs(graph[i][1]) + 3) % mod; + }; + + dfs(0); + + function dfs2 = [&](int i, int p) { + ans[i] += ans[p]; + ans[i] %= mod; + + if (graph[i][0] == -1) { + return; + } + + dfs2(graph[i][0], i); + dfs2(graph[i][1], i); + }; + + if (graph[0][0] != -1) { + dfs2(graph[0][0], 0); + dfs2(graph[0][1], 0); + } + + cout << ans; +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + pre(); + + int t; + (TEST && cin >> t) || (t = 1); + while (t--) { + solve(); + } +} diff --git a/Codeforces Round 886 (Div. 4)/G. The Morning Star.cpp b/Codeforces Round 886 (Div. 4)/G. The Morning Star.cpp new file mode 100644 index 0000000..72757de --- /dev/null +++ b/Codeforces Round 886 (Div. 4)/G. The Morning Star.cpp @@ -0,0 +1,134 @@ +/* Problem URL: https://codeforces.com/problemset/problem/1850/G */ + +#include +#include +#include + +using namespace std; +using namespace __gnu_pbds; + +template > +using ordered_set = tree; + +#define V vector + +#define rmin(a, b) a = min(a, b) +#define rmax(a, b) a = max(a, b) + +#define rep(i, lim) for (int i = 0; i < (lim); i++) +#define nrep(i, s, lim) for (int 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; +} + +const int oo = INT32_MAX >> 1; +const ll OO = INT64_MAX >> 1; + + +void pre() +{ + +} + +#define TEST 1 + +void solve() +{ + int n; + cin >> n; + + V> v(n); + repv(i, v) { + cin >> i.first >> i.second; + } + sortv(v); + + map cx; + map cy; + + ll lim = 1e10; + + ll ans = 0; + repv(p, v) { + auto [x, y] = p; + ans += cx[x]; + ans += cy[y]; + ans += cy[y - lim + x]; + ans += cy[y + lim - x]; + + cx[x]++; + cy[y]++; + cy[y - lim + x]++; + cy[y + lim - x]++; + } + + cout << ans * 2 << '\n'; +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + pre(); + + int t; + (TEST && cin >> t) || (t = 1); + while (t--) { + solve(); + } +} diff --git a/Codeforces Round 916 (Div. 3)/E1. Game with Marbles (Easy Version).cpp b/Codeforces Round 916 (Div. 3)/E1. Game with Marbles (Easy Version).cpp new file mode 100644 index 0000000..2b89cae --- /dev/null +++ b/Codeforces Round 916 (Div. 3)/E1. Game with Marbles (Easy Version).cpp @@ -0,0 +1,131 @@ +/* Problem URL: https://codeforces.com/problemset/problem/1914/E1 */ + +#include +#include +#include + +using namespace std; +using namespace __gnu_pbds; + +template > +using ordered_set = tree; + +#define V vector + +#define rmin(a, b) a = min(a, b) +#define rmax(a, b) a = max(a, b) + +#define rep(i, lim) for (int i = 0; i < (lim); i++) +#define nrep(i, s, lim) for (int 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; +} + +const int oo = INT32_MAX >> 1; +const ll OO = INT64_MAX >> 1; + + +void pre() +{ + +} + +#define TEST 1 + +void solve() +{ + int n; + cin >> n; + + vl a(n); + vl b(n); + cin >> a >> b; + + vvl dp(1 << n, vl(2)); + nrep(i, 1, 1 << n) { + ll maxi = -OO; + ll mini = OO; + + rep(j, n) { + if (~(i >> j) & 1) { + continue; + } + + rmax(maxi, dp[i ^ (1 << j)][0] + a[j] - 1); + rmin(mini, dp[i ^ (1 << j)][1] - b[j] + 1); + } + + dp[i][0] = mini; + dp[i][1] = maxi; + } + + cout << dp[(1 << n) - 1][1] << '\n'; +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + pre(); + + int t; + (TEST && cin >> t) || (t = 1); + while (t--) { + solve(); + } +} diff --git a/Codeforces Round 920 (Div. 3)/F. Sum of Progression.cpp b/Codeforces Round 920 (Div. 3)/F. Sum of Progression.cpp new file mode 100644 index 0000000..6fd4088 --- /dev/null +++ b/Codeforces Round 920 (Div. 3)/F. Sum of Progression.cpp @@ -0,0 +1,116 @@ +/* Problem URL: https://codeforces.com/problemset/problem/1921/F */ + +#include +#include +#include + +using namespace std; +using namespace __gnu_pbds; + +template > +using ordered_set = tree; + +#define V vector + +#define rmin(a, b) a = min(a, b) +#define rmax(a, b) a = max(a, b) + +#define rep(i, lim) for (int i = 0; i < (lim); i++) +#define nrep(i, s, lim) for (int 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; +} + +const int oo = INT32_MAX >> 1; +const ll OO = INT64_MAX >> 1; + + +void pre() +{ + +} + +#define TEST 1 + +void solve() +{ + int n, q; + cin >> n >> q; + vl a(n); + cin >> a; + + + + while (q--) { + int s, d, k; + cin >> s >> d >> k; + } +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + pre(); + + int t; + (TEST && cin >> t) || (t = 1); + while (t--) { + solve(); + } +} diff --git a/TODO.md b/TODO.md index 1c5e2fa..e9f8774 100644 --- a/TODO.md +++ b/TODO.md @@ -105,6 +105,11 @@ Official divs from codeforces Doesn't look impossible, but I'm not sure what to do on it, I'll check it out in the future. + + - [ ] [F. Sum of Progression](https://codeforces.com/problemset/problem/1921/F) + + Another problem that's kinda interesting, but I guess my head is not working + recently, I'll get back to it once I can finally work again. - Div 3