diff --git a/Educational Codeforces Round 44 (Rated for Div. 2)/A. Chess Placing.cpp b/Educational Codeforces Round 44 (Rated for Div. 2)/A. Chess Placing.cpp new file mode 100644 index 0000000..f703282 --- /dev/null +++ b/Educational Codeforces Round 44 (Rated for Div. 2)/A. Chess Placing.cpp @@ -0,0 +1,99 @@ +/* Problem URL: https://codeforces.com/contest/985/problem/A */ + +#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; +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + int n; + cin >> n; + + vi fds(n >> 1); + cin >> fds; + sortv(fds); + + int ans1 = 0; + int ans2 = 0; + + rep(i, n >> 1) { + ans1 += abs(fds[i] - ((i << 1) + 1)); + ans2 += abs(fds[i] - ((i << 1) + 2)); + } + + cout << min(ans1, ans2) << '\n'; +} diff --git a/Educational Codeforces Round 44 (Rated for Div. 2)/B. Switches and Lamps.cpp b/Educational Codeforces Round 44 (Rated for Div. 2)/B. Switches and Lamps.cpp new file mode 100644 index 0000000..56df56e --- /dev/null +++ b/Educational Codeforces Round 44 (Rated for Div. 2)/B. Switches and Lamps.cpp @@ -0,0 +1,115 @@ +/* Problem URL: https://codeforces.com/contest/985/problem/B */ + +#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; +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + int n, m; + cin >> n >> m; + + V fds(n); + cin >> fds; + + vi count(m); + rep(i, n) { + rep(j, m) { + if (fds[i][j] == '1') { + count[j]++; + } + } + } + + bool pos = false; + rep(i, n) { + bool valid = true; + rep(j, m) { + if (fds[i][j] == '1' && count[j] == 1) { + valid = false; + break; + } + } + + if (valid) { + pos = true; + break; + } + } + + cout << (pos ? "YES\n" : "NO\n"); +} diff --git a/Educational Codeforces Round 44 (Rated for Div. 2)/C. Liebig's Barrels.cpp b/Educational Codeforces Round 44 (Rated for Div. 2)/C. Liebig's Barrels.cpp new file mode 100644 index 0000000..68fd155 --- /dev/null +++ b/Educational Codeforces Round 44 (Rated for Div. 2)/C. Liebig's Barrels.cpp @@ -0,0 +1,114 @@ +/* Problem URL: https://codeforces.com/contest/985/problem/C */ + +#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; +} + +int main() +{ + ios::sync_with_stdio(false); + cin.tie(nullptr); + + int n, k; + ll l; + cin >> n >> k >> l; + + vl fds(n * k); + cin >> fds; + + sortv(fds); + + ll ans = 0; + int rem = 0; + int count = 0; + + for (int i = n * k - 1; i >= 0; i--) { + rem++; + if (fds[i] - fds[0] > l || rem < k) { + continue; + } + + count++; + rem -= k; + ans += fds[i]; + } + + + if (count < n) { + cout << "0\n"; + return 0; + } + + cout << ans << '\n'; +}