feat: usaco
This commit is contained in:
parent
659cac6af3
commit
00d23dc313
106 changed files with 2569 additions and 52 deletions
|
|
@ -5,4 +5,4 @@ CompileFlags:
|
||||||
- -Wpedantic
|
- -Wpedantic
|
||||||
- -Wshadow
|
- -Wshadow
|
||||||
- -DLOCAL
|
- -DLOCAL
|
||||||
- -Wno-unknown-pragmas
|
- -Wno-unknown-pragmas -std=c++23
|
||||||
|
|
|
||||||
|
|
@ -7,60 +7,69 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
template <typename T>
|
using i32 = int32_t;
|
||||||
constexpr T MIN = std::numeric_limits<T>::min();
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
constexpr T MAX = std::numeric_limits<T>::max();
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
[[nodiscard]] static T sc(auto&& x) {
|
|
||||||
return static_cast<T>(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
[[nodiscard]] static T sz(auto&& x) {
|
|
||||||
return static_cast<T>(x.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
using ll = long long;
|
|
||||||
using ld = long double;
|
|
||||||
template <typename T>
|
|
||||||
using vec = std::vector<T>;
|
|
||||||
template <typename T, size_t N>
|
|
||||||
using arr = std::array<T, N>;
|
|
||||||
|
|
||||||
#define ff first
|
|
||||||
#define ss second
|
|
||||||
#define eb emplace_back
|
|
||||||
#define pb push_back
|
|
||||||
#define all(x) (x).begin(), (x).end()
|
#define all(x) (x).begin(), (x).end()
|
||||||
#define rall(x) (x).rbegin(), (x).rend()
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
// }}}
|
// }}}
|
||||||
|
|
||||||
void solve() {
|
void solve() {
|
||||||
int n;
|
u32 n;
|
||||||
cin >> n;
|
cin >> n;
|
||||||
vec<ll> a(n);
|
vector<u64> a(n);
|
||||||
for (auto& e : a) {
|
for (auto& e : a)
|
||||||
cin >> e;
|
cin >> e;
|
||||||
|
|
||||||
|
// auto dfs = [&](u32 i, u64 s1, auto&& self) -> u64 {
|
||||||
|
// if (i == n) {
|
||||||
|
// return max(s1, s2) - min(s1, s2);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return min(self(i + 1, s1 + a[i], self),
|
||||||
|
// self(i + 1, s1,self));
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// cout << dfs(0, 0, dfs) << '\n';
|
||||||
|
|
||||||
|
u64 total = accumulate(all(a), 0LL);
|
||||||
|
u64 ans = total;
|
||||||
|
for (u64 mask = 0; mask < (1LL << n); ++mask) {
|
||||||
|
u64 sum = 0;
|
||||||
|
for (u64 bit = 0; bit < n; ++bit) {
|
||||||
|
if (mask & (1LL << bit)) {
|
||||||
|
sum += a[bit];
|
||||||
}
|
}
|
||||||
|
|
||||||
auto rec = [&](auto&& self, int i, ll l, ll r) {
|
|
||||||
if (i == n) {
|
|
||||||
return abs(r - l);
|
|
||||||
}
|
}
|
||||||
|
ans = min(ans, max(total - sum, sum) - min(total - sum, sum));
|
||||||
return min(self(self, i + 1, l + a[i], r), self(self, i + 1, l, r + a[i]));
|
}
|
||||||
};
|
cout << ans << '\n';
|
||||||
|
|
||||||
cout << rec(rec, 0, 0, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() { // {{{
|
int main() { // {{{
|
||||||
cin.tie(nullptr)->sync_with_stdio(false);
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
u32 tc = 1;
|
||||||
|
// cin >> tc;
|
||||||
|
|
||||||
|
for (u32 t = 0; t < tc; ++t) {
|
||||||
solve();
|
solve();
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@
|
||||||
-Wunused
|
-Wunused
|
||||||
-Woverloaded-virtual
|
-Woverloaded-virtual
|
||||||
-Wconversion
|
-Wconversion
|
||||||
-Wsign-conversion
|
|
||||||
-Wmisleading-indentation
|
-Wmisleading-indentation
|
||||||
-Wduplicated-cond
|
-Wduplicated-cond
|
||||||
-Wduplicated-branches
|
-Wduplicated-branches
|
||||||
|
|
@ -28,4 +27,4 @@
|
||||||
-Wdouble-promotion
|
-Wdouble-promotion
|
||||||
-Wundef
|
-Wundef
|
||||||
-DLOCAL
|
-DLOCAL
|
||||||
-std=c++20
|
-std=c++23
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
3
|
5
|
||||||
7 7 100
|
3 2 7 4 1
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
86
|
1
|
||||||
|
|
||||||
[code]: 0
|
[code]: 0
|
||||||
[time]: 3.65114 ms
|
[time]: 4.19974 ms
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
.PHONY: run debug clean setup init
|
.PHONY: run debug clean setup init
|
||||||
|
|
||||||
|
VERSION ?= 20
|
||||||
|
|
||||||
SRC = $(word 2,$(MAKECMDGOALS))
|
SRC = $(word 2,$(MAKECMDGOALS))
|
||||||
|
|
||||||
.SILENT:
|
.SILENT:
|
||||||
|
|
@ -17,9 +19,8 @@ setup:
|
||||||
test -d build || mkdir -p build
|
test -d build || mkdir -p build
|
||||||
test -d io || mkdir -p io
|
test -d io || mkdir -p io
|
||||||
test -d scripts || mkdir -p scripts
|
test -d scripts || mkdir -p scripts
|
||||||
test -f compile_flags.txt || cp $(HOME)/.config/cp-template/compile_flags.txt .
|
test -f compile_flags.txt || cp $(HOME)/.config/cp-template/compile_flags.txt . && echo -std=c++$(VERSION) >>compile_flags.txt
|
||||||
test -f .clangd || cp $(HOME)/.config/cp-template/.clangd .
|
test -f .clangd || cp $(HOME)/.config/cp-template/.clangd . && echo -e "\t\t-std=c++$(VERSION)" >>.clangd
|
||||||
test -f .clang-format || cp $(HOME)/.config/cp-template/.clang-format .
|
|
||||||
|
|
||||||
init:
|
init:
|
||||||
make setup
|
make setup
|
||||||
|
|
|
||||||
37
usaco/bronze/complete-search/.clangd
Normal file
37
usaco/bronze/complete-search/.clangd
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
CompileFlags:
|
||||||
|
Add:
|
||||||
|
-O2
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wpedantic
|
||||||
|
-Wshadow
|
||||||
|
-Wformat=2
|
||||||
|
-Wfloat-equal
|
||||||
|
-Wlogical-op
|
||||||
|
-Wshift-overflow=2
|
||||||
|
-Wnon-virtual-dtor
|
||||||
|
-Wold-style-cast
|
||||||
|
-Wcast-qual
|
||||||
|
-Wuseless-cast
|
||||||
|
-Wno-sign-promotion
|
||||||
|
-Wcast-align
|
||||||
|
-Wunused
|
||||||
|
-Woverloaded-virtual
|
||||||
|
-Wconversion
|
||||||
|
-Wsign-conversion
|
||||||
|
-Wmisleading-indentation
|
||||||
|
-Wduplicated-cond
|
||||||
|
-Wduplicated-branches
|
||||||
|
-Wlogical-op
|
||||||
|
-Wnull-dereference
|
||||||
|
-Wformat=2
|
||||||
|
-Wformat-overflow
|
||||||
|
-Wformat-truncation
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wundef
|
||||||
|
-DLOCAL
|
||||||
|
-Wno-unknown-pragmas
|
||||||
|
-std=c++23
|
||||||
|
-std=c++17
|
||||||
|
-std=c++17
|
||||||
|
-std=c++17
|
||||||
126
usaco/bronze/complete-search/air-cownditioning-ii.cc
Normal file
126
usaco/bronze/complete-search/air-cownditioning-ii.cc
Normal file
|
|
@ -0,0 +1,126 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 201703L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T, typename U> [[nodiscard]] T sc(U &&u) {
|
||||||
|
return static_cast<T>(std::forward<U>(u));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, typename C> [[nodiscard]] T sz(C const &c) {
|
||||||
|
return static_cast<T>(c.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(LOCAL) && __cplusplus >= 201703L
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
struct ac {
|
||||||
|
u32 l, r;
|
||||||
|
i32 p, m;
|
||||||
|
// NOTE: copied from AI - order doesn't matter, just need to consider all
|
||||||
|
// permutations
|
||||||
|
bool operator<(ac const &o) const {
|
||||||
|
return tie(l, r, p, m) < tie(o.l, o.r, o.p, m);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 N, M;
|
||||||
|
cin >> N >> M;
|
||||||
|
|
||||||
|
vector<i32> to_cool(101, 0);
|
||||||
|
|
||||||
|
u32 l, r, c, m;
|
||||||
|
for (u32 i = 0; i < N; ++i) {
|
||||||
|
cin >> l >> r >> c;
|
||||||
|
|
||||||
|
for (u32 j = l; j <= r; ++j) {
|
||||||
|
to_cool[j] = c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<ac> acs;
|
||||||
|
for (u32 i = 0; i < M; ++i) {
|
||||||
|
cin >> l >> r >> c >> m;
|
||||||
|
|
||||||
|
acs.emplace_back(ac{l, r, c, m});
|
||||||
|
}
|
||||||
|
|
||||||
|
sort(all(acs));
|
||||||
|
|
||||||
|
u32 ans = MAX<u32>;
|
||||||
|
for (u32 mask = 0; mask < 1LL << M; ++mask) {
|
||||||
|
u32 tc = MAX<u32>;
|
||||||
|
auto temps = to_cool;
|
||||||
|
|
||||||
|
u32 cost = 0;
|
||||||
|
// subsets != permutation/order
|
||||||
|
// want to track use/lack of use
|
||||||
|
for (u32 bit = 0; bit < M; ++bit) {
|
||||||
|
if (!(mask & (1 << bit)))
|
||||||
|
continue;
|
||||||
|
auto &a = acs[bit];
|
||||||
|
cost += a.m;
|
||||||
|
for (u32 j = a.l; j <= min((u32)100, a.r); ++j) {
|
||||||
|
temps[j] -= a.p;
|
||||||
|
}
|
||||||
|
if (all_of(all(temps), [](i32 e) { return e <= 0; })) {
|
||||||
|
ans = min(ans, cost);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ans = min(ans, tc);
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << ans << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "air-cownditioning-ii"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
100
usaco/bronze/complete-search/balancing.cc
Normal file
100
usaco/bronze/complete-search/balancing.cc
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 n, B;
|
||||||
|
cin >> n >> B;
|
||||||
|
|
||||||
|
vector<pair<u32, u32>> pts(n);
|
||||||
|
vector<u32> horiz_placements, vert_placements;
|
||||||
|
|
||||||
|
for (u32 i = 0; i < n; ++i) {
|
||||||
|
cin >> pts[i].ff >> pts[i].ss;
|
||||||
|
vert_placements.emplace_back(pts[i].ff + 1);
|
||||||
|
horiz_placements.emplace_back(pts[i].ss + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
u64 ans = numeric_limits<u64>::max();
|
||||||
|
for (auto vp : vert_placements) {
|
||||||
|
for (auto hp : horiz_placements) {
|
||||||
|
u64 tl = 0, tr = 0, bl = 0, br = 0;
|
||||||
|
for (auto &[x, y] : pts) {
|
||||||
|
if (x < vp && y > hp)
|
||||||
|
++tl;
|
||||||
|
if (x > vp && y > hp)
|
||||||
|
++tr;
|
||||||
|
if (x < vp && y < hp)
|
||||||
|
++bl;
|
||||||
|
if (x > vp && y < hp)
|
||||||
|
++br;
|
||||||
|
}
|
||||||
|
ans = min(ans, max({tl, tr, bl, br}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << ans << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "balancing"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#else
|
||||||
|
freopen(PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen(PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
97
usaco/bronze/complete-search/circlecross.cc
Normal file
97
usaco/bronze/complete-search/circlecross.cc
Normal file
|
|
@ -0,0 +1,97 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
string s;
|
||||||
|
cin >> s;
|
||||||
|
array<pair<u32, u32>, 26> enter_exit{};
|
||||||
|
for (u32 i = 0; i < s.size(); ++i) {
|
||||||
|
u32 j = s[i] - 'A';
|
||||||
|
if (enter_exit[j].ff == 0) {
|
||||||
|
enter_exit[j].ff = i + 1;
|
||||||
|
} else {
|
||||||
|
enter_exit[j].ss = i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 ans = 0;
|
||||||
|
for (u32 r = 0; r < enter_exit.size(); ++r) {
|
||||||
|
for (u32 l = 0; l < r; ++l) {
|
||||||
|
if (enter_exit[l].ff < enter_exit[r].ff &&
|
||||||
|
enter_exit[r].ff < enter_exit[l].ss &&
|
||||||
|
enter_exit[l].ss < enter_exit[r].ss ||
|
||||||
|
enter_exit[r].ff < enter_exit[l].ff &&
|
||||||
|
enter_exit[l].ff < enter_exit[r].ss &&
|
||||||
|
enter_exit[r].ss < enter_exit[l].ss) {
|
||||||
|
++ans;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << ans << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "circlecross"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#else
|
||||||
|
freopen(PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen(PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
|
|
@ -16,7 +16,6 @@
|
||||||
-Wunused
|
-Wunused
|
||||||
-Woverloaded-virtual
|
-Woverloaded-virtual
|
||||||
-Wconversion
|
-Wconversion
|
||||||
-Wsign-conversion
|
|
||||||
-Wmisleading-indentation
|
-Wmisleading-indentation
|
||||||
-Wduplicated-cond
|
-Wduplicated-cond
|
||||||
-Wduplicated-branches
|
-Wduplicated-branches
|
||||||
|
|
@ -28,3 +27,4 @@
|
||||||
-Wdouble-promotion
|
-Wdouble-promotion
|
||||||
-Wundef
|
-Wundef
|
||||||
-DLOCAL
|
-DLOCAL
|
||||||
|
-std=c++17
|
||||||
91
usaco/bronze/complete-search/cownomics.cc
Normal file
91
usaco/bronze/complete-search/cownomics.cc
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 n, m;
|
||||||
|
cin >> n >> m;
|
||||||
|
|
||||||
|
array<vector<string>, 2> cows{vector<string>(n), vector<string>(n)};
|
||||||
|
for (auto &e : cows)
|
||||||
|
for (auto &g : e)
|
||||||
|
cin >> g;
|
||||||
|
|
||||||
|
u32 ans = 0;
|
||||||
|
for (u32 col = 0; col < m; ++col) {
|
||||||
|
unordered_set<char> plain;
|
||||||
|
for (u32 i = 0; i < n; ++i)
|
||||||
|
plain.insert(cows[0][i][col]);
|
||||||
|
u32 i;
|
||||||
|
for (i = 0; i < n; ++i)
|
||||||
|
if (plain.find(cows[1][i][col]) != plain.end()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ans += i == n;
|
||||||
|
}
|
||||||
|
cout << ans << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "cownomics"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#else
|
||||||
|
freopen(PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen(PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
14
usaco/bronze/complete-search/debug_flags.txt
Normal file
14
usaco/bronze/complete-search/debug_flags.txt
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
-g3
|
||||||
|
-fsanitize=address,undefined
|
||||||
|
-fsanitize=float-divide-by-zero
|
||||||
|
-fsanitize=float-cast-overflow
|
||||||
|
-fno-sanitize-recover=all
|
||||||
|
-fstack-protector-all
|
||||||
|
-fstack-usage
|
||||||
|
-fno-omit-frame-pointer
|
||||||
|
-fno-inline
|
||||||
|
-ffunction-sections
|
||||||
|
-D_GLIBCXX_DEBUG
|
||||||
|
-D_GLIBCXX_DEBUG_PEDANTIC
|
||||||
|
-DLOCAL
|
||||||
|
-std=c++20
|
||||||
87
usaco/bronze/complete-search/diamond.cc
Normal file
87
usaco/bronze/complete-search/diamond.cc
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 n, k;
|
||||||
|
cin >> n >> k;
|
||||||
|
|
||||||
|
vector<u64> diamonds(n);
|
||||||
|
for (auto &e : diamonds)
|
||||||
|
cin >> e;
|
||||||
|
sort(all(diamonds));
|
||||||
|
|
||||||
|
u32 r = 0;
|
||||||
|
u32 ans = 0;
|
||||||
|
for (u32 l = 0; l < n; ++l) {
|
||||||
|
while (r < n && diamonds[r] - diamonds[l] <= k) {
|
||||||
|
++r;
|
||||||
|
}
|
||||||
|
ans = max(ans, r - l);
|
||||||
|
}
|
||||||
|
cout << ans << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "diamond"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#else
|
||||||
|
freopen(PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen(PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
102
usaco/bronze/complete-search/gymnastics.cc
Normal file
102
usaco/bronze/complete-search/gymnastics.cc
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 k, n;
|
||||||
|
cin >> k >> n;
|
||||||
|
|
||||||
|
vector<vector<u32>> rounds(k, vector<u32>(n));
|
||||||
|
|
||||||
|
for (auto &e : rounds)
|
||||||
|
for (auto &g : e)
|
||||||
|
cin >> g;
|
||||||
|
|
||||||
|
u32 ans = 0;
|
||||||
|
|
||||||
|
auto consistent = [&](u32 c1, u32 c2) {
|
||||||
|
for (u32 i = 0; i < k; ++i) {
|
||||||
|
bool found_c2 = false;
|
||||||
|
for (u32 j = 0; j < n; ++j) {
|
||||||
|
if (rounds[i][j] == c1 && found_c2) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
found_c2 |= rounds[i][j] == c2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
for (u32 i = 1; i <= n; ++i) {
|
||||||
|
for (u32 j = 1; j < i; ++j) {
|
||||||
|
if (consistent(i, j) || consistent(j, i))
|
||||||
|
++ans;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << ans << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "gymnastics"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#else
|
||||||
|
freopen(PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen(PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
7
usaco/bronze/complete-search/io/air-cownditioning-ii.in
Normal file
7
usaco/bronze/complete-search/io/air-cownditioning-ii.in
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
2 4
|
||||||
|
1 5 2
|
||||||
|
7 9 3
|
||||||
|
2 9 2 3
|
||||||
|
1 6 2 8
|
||||||
|
1 2 4 2
|
||||||
|
6 9 1 5
|
||||||
4
usaco/bronze/complete-search/io/air-cownditioning-ii.out
Normal file
4
usaco/bronze/complete-search/io/air-cownditioning-ii.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
10
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 4.50897 ms
|
||||||
8
usaco/bronze/complete-search/io/balancing.in
Normal file
8
usaco/bronze/complete-search/io/balancing.in
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
7 10
|
||||||
|
7 3
|
||||||
|
5 5
|
||||||
|
9 7
|
||||||
|
3 1
|
||||||
|
7 7
|
||||||
|
5 3
|
||||||
|
9 1
|
||||||
4
usaco/bronze/complete-search/io/balancing.out
Normal file
4
usaco/bronze/complete-search/io/balancing.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
2
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 5.50079 ms
|
||||||
1
usaco/bronze/complete-search/io/circlecross.in
Normal file
1
usaco/bronze/complete-search/io/circlecross.in
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ABCCABDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ
|
||||||
4
usaco/bronze/complete-search/io/circlecross.out
Normal file
4
usaco/bronze/complete-search/io/circlecross.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
1
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 4.23932 ms
|
||||||
7
usaco/bronze/complete-search/io/cownomics.in
Normal file
7
usaco/bronze/complete-search/io/cownomics.in
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
3 8
|
||||||
|
AATCCCAT
|
||||||
|
GATTGCAA
|
||||||
|
GGTCGCAA
|
||||||
|
ACTCCCAG
|
||||||
|
ACTCGCAT
|
||||||
|
ACTTCCAT
|
||||||
4
usaco/bronze/complete-search/io/cownomics.out
Normal file
4
usaco/bronze/complete-search/io/cownomics.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
1
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 4.05145 ms
|
||||||
6
usaco/bronze/complete-search/io/diamond.in
Normal file
6
usaco/bronze/complete-search/io/diamond.in
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
5 3
|
||||||
|
1
|
||||||
|
6
|
||||||
|
4
|
||||||
|
3
|
||||||
|
1
|
||||||
4
usaco/bronze/complete-search/io/diamond.out
Normal file
4
usaco/bronze/complete-search/io/diamond.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
4
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 4.07553 ms
|
||||||
4
usaco/bronze/complete-search/io/gymnastics.in
Normal file
4
usaco/bronze/complete-search/io/gymnastics.in
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
3 4
|
||||||
|
4 1 2 3
|
||||||
|
4 1 3 2
|
||||||
|
4 2 1 3
|
||||||
4
usaco/bronze/complete-search/io/gymnastics.out
Normal file
4
usaco/bronze/complete-search/io/gymnastics.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
4
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 4.5898 ms
|
||||||
4
usaco/bronze/complete-search/io/lineup.in
Normal file
4
usaco/bronze/complete-search/io/lineup.in
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
3
|
||||||
|
Buttercup must be milked beside Bella
|
||||||
|
Blue must be milked beside Bella
|
||||||
|
Sue must be milked beside Beatrice
|
||||||
11
usaco/bronze/complete-search/io/lineup.out
Normal file
11
usaco/bronze/complete-search/io/lineup.out
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
Beatrice
|
||||||
|
Sue
|
||||||
|
Belinda
|
||||||
|
Bessie
|
||||||
|
Betsy
|
||||||
|
Blue
|
||||||
|
Bella
|
||||||
|
Buttercup
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 5.91278 ms
|
||||||
3
usaco/bronze/complete-search/io/maximum-distance.in
Normal file
3
usaco/bronze/complete-search/io/maximum-distance.in
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
3
|
||||||
|
321 -15 -525
|
||||||
|
404 373 990
|
||||||
4
usaco/bronze/complete-search/io/maximum-distance.out
Normal file
4
usaco/bronze/complete-search/io/maximum-distance.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
1059112
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 4.35638 ms
|
||||||
1
usaco/bronze/complete-search/io/pails.in
Normal file
1
usaco/bronze/complete-search/io/pails.in
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
17 25 77
|
||||||
4
usaco/bronze/complete-search/io/pails.out
Normal file
4
usaco/bronze/complete-search/io/pails.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
76
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 3.78871 ms
|
||||||
7
usaco/bronze/complete-search/io/sleeping-in-class.in
Normal file
7
usaco/bronze/complete-search/io/sleeping-in-class.in
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
3
|
||||||
|
6
|
||||||
|
1 2 3 1 1 1
|
||||||
|
3
|
||||||
|
2 2 3
|
||||||
|
5
|
||||||
|
0 0 0 0 0
|
||||||
6
usaco/bronze/complete-search/io/sleeping-in-class.out
Normal file
6
usaco/bronze/complete-search/io/sleeping-in-class.out
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
3
|
||||||
|
2
|
||||||
|
0
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 3.57866 ms
|
||||||
3
usaco/bronze/complete-search/io/three-logos.in
Normal file
3
usaco/bronze/complete-search/io/three-logos.in
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
1 1
|
||||||
|
1 3
|
||||||
|
4 3
|
||||||
8
usaco/bronze/complete-search/io/three-logos.out
Normal file
8
usaco/bronze/complete-search/io/three-logos.out
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
4
|
||||||
|
ABBB
|
||||||
|
CCCC
|
||||||
|
CCCC
|
||||||
|
CCCC
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 11.8504 ms
|
||||||
5
usaco/bronze/complete-search/io/tracing.in
Normal file
5
usaco/bronze/complete-search/io/tracing.in
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
4 3
|
||||||
|
1100
|
||||||
|
7 1 2
|
||||||
|
5 2 3
|
||||||
|
6 2 4
|
||||||
4
usaco/bronze/complete-search/io/tracing.out
Normal file
4
usaco/bronze/complete-search/io/tracing.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
1 1 Infinity
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 4.76265 ms
|
||||||
116
usaco/bronze/complete-search/lineup.cc
Normal file
116
usaco/bronze/complete-search/lineup.cc
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
vector<string> names;
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 n;
|
||||||
|
cin >> n;
|
||||||
|
|
||||||
|
vector<pair<string, string>> constraints(n);
|
||||||
|
string word, first, last;
|
||||||
|
for (u32 i = 0; i < n; ++i) {
|
||||||
|
cin >> constraints[i].ff;
|
||||||
|
for (u32 j = 0; j < 4; ++j)
|
||||||
|
cin >> word;
|
||||||
|
cin >> constraints[i].ss;
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<string> ans(8, "Z");
|
||||||
|
|
||||||
|
do {
|
||||||
|
bool good = true;
|
||||||
|
|
||||||
|
for (auto &[a, b] : constraints) {
|
||||||
|
bool ok = false;
|
||||||
|
for (i32 j = 0; j < 8; ++j) {
|
||||||
|
if (names[j] == a && (j + 1 < 8 && names[j + 1] == b ||
|
||||||
|
j - 1 >= 0 && names[j - 1] == b)) {
|
||||||
|
ok = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!ok) {
|
||||||
|
good = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (good && names < ans) {
|
||||||
|
ans = names;
|
||||||
|
}
|
||||||
|
|
||||||
|
} while (next_permutation(names.begin(), names.end()));
|
||||||
|
|
||||||
|
for (auto &e : ans)
|
||||||
|
cout << e << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
names = {"Bessie", "Buttercup", "Belinda", "Beatrice",
|
||||||
|
"Bella", "Blue", "Betsy", "Sue"};
|
||||||
|
sort(all(names));
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "lineup"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#else
|
||||||
|
freopen(PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen(PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
.PHONY: run debug clean setup init
|
.PHONY: run debug clean setup init
|
||||||
|
|
||||||
|
VERSION ?= 20
|
||||||
|
|
||||||
SRC = $(word 2,$(MAKECMDGOALS))
|
SRC = $(word 2,$(MAKECMDGOALS))
|
||||||
|
|
||||||
.SILENT:
|
.SILENT:
|
||||||
|
|
@ -17,8 +19,8 @@ setup:
|
||||||
test -d build || mkdir -p build
|
test -d build || mkdir -p build
|
||||||
test -d io || mkdir -p io
|
test -d io || mkdir -p io
|
||||||
test -d scripts || mkdir -p scripts
|
test -d scripts || mkdir -p scripts
|
||||||
test -f compile_flags.txt || cp $(HOME)/.config/cp-template/compile_flags.txt .
|
test -f compile_flags.txt || cp $(HOME)/.config/cp-template/compile_flags.txt . && echo -std=c++$(VERSION) >>compile_flags.txt
|
||||||
test -f .clang-format || cp $(HOME)/.config/cp-template/.clang-format .
|
test -f .clangd || cp $(HOME)/.config/cp-template/.clangd . && echo -e "\t\t-std=c++$(VERSION)" >>.clangd
|
||||||
|
|
||||||
init:
|
init:
|
||||||
make setup
|
make setup
|
||||||
92
usaco/bronze/complete-search/maximum-distance.cc
Normal file
92
usaco/bronze/complete-search/maximum-distance.cc
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T>
|
||||||
|
constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
[[nodiscard]] static T sc(auto&& x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
[[nodiscard]] static T sz(auto&& x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() {
|
||||||
|
std::cout << "NO\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
static void YES() {
|
||||||
|
std::cout << "YES\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 n;
|
||||||
|
cin >> n;
|
||||||
|
|
||||||
|
vector<pair<i64, i64>> pts(n);
|
||||||
|
for (i32 i = 0; i < n; ++i)
|
||||||
|
cin >> pts[i].ff;
|
||||||
|
for (i32 i = 0; i < n; ++i)
|
||||||
|
cin >> pts[i].ss;
|
||||||
|
|
||||||
|
i64 ans = MIN<i64>;
|
||||||
|
|
||||||
|
for (u32 i = 0; i < n; ++i) {
|
||||||
|
for (u32 j = 0; j < i; ++j) {
|
||||||
|
ans = max(ans, (pts[i].ff - pts[j].ff) * (pts[i].ff - pts[j].ff) +
|
||||||
|
(pts[i].ss - pts[j].ss) * (pts[i].ss - pts[j].ss));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << ans << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
int tc = 1;
|
||||||
|
// cin >> tc;
|
||||||
|
|
||||||
|
for (int t = 0; t < tc; ++t) {
|
||||||
|
solve();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
82
usaco/bronze/complete-search/pails.cc
Normal file
82
usaco/bronze/complete-search/pails.cc
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u64 x, y, m;
|
||||||
|
cin >> x >> y >> m;
|
||||||
|
|
||||||
|
u64 ans = 0;
|
||||||
|
for (u32 x_uses = 0; x_uses <= m / x; ++x_uses) {
|
||||||
|
for (u32 y_uses = 0; y_uses <= (m - x_uses * x) / y; ++y_uses) {
|
||||||
|
u64 used = x_uses * x + y_uses * y;
|
||||||
|
ans = max(ans, used);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << ans << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "pails"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#else
|
||||||
|
freopen(PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen(PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
31
usaco/bronze/complete-search/scripts/memdebug.sh
Normal file
31
usaco/bronze/complete-search/scripts/memdebug.sh
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./scripts/utils.sh
|
||||||
|
|
||||||
|
SRC="$1"
|
||||||
|
BASE=$(basename "$SRC" .cc)
|
||||||
|
INPUT="${BASE}.in"
|
||||||
|
OUTPUT="${BASE}.out"
|
||||||
|
DBG_BIN="${BASE}.debug"
|
||||||
|
|
||||||
|
test -d build || mkdir -p build
|
||||||
|
test -d io || mkdir -p io
|
||||||
|
|
||||||
|
test -f "$INPUT" && test ! -f "io/$INPUT" && mv "$INPUT" "io/"
|
||||||
|
test -f "$OUTPUT" && test ! -f "io/$OUTPUT" && mv "$OUTPUT" "io/"
|
||||||
|
|
||||||
|
test -f "io/$INPUT" || touch "io/$INPUT"
|
||||||
|
test -f "io/$OUTPUT" || touch "io/$OUTPUT"
|
||||||
|
|
||||||
|
INPUT="io/$INPUT"
|
||||||
|
OUTPUT="io/$OUTPUT"
|
||||||
|
DBG_BIN="build/$DBG_BIN"
|
||||||
|
|
||||||
|
compile_source "$SRC" "$DBG_BIN" "$OUTPUT" @mem_debug_flags.txt
|
||||||
|
CODE=$?
|
||||||
|
test $CODE -gt 0 && exit $CODE
|
||||||
|
|
||||||
|
# Use ulimit to restrict memory to 256MB (262144 KB)
|
||||||
|
# This will run the binary with memory restrictions
|
||||||
|
execute_binary_with_memory_limit "$DBG_BIN" "$INPUT" "$OUTPUT" 262144
|
||||||
|
exit $?
|
||||||
98
usaco/bronze/complete-search/sleeping-in-class.cc
Normal file
98
usaco/bronze/complete-search/sleeping-in-class.cc
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 n;
|
||||||
|
cin >> n;
|
||||||
|
vector<u64> a(n);
|
||||||
|
for (auto &e : a)
|
||||||
|
cin >> e;
|
||||||
|
|
||||||
|
u64 big = *max_element(all(a));
|
||||||
|
u64 ub = accumulate(all(a), 0LL);
|
||||||
|
|
||||||
|
for (u64 target = big; target <= ub; ++target) {
|
||||||
|
u32 last = 0, moves = 0;
|
||||||
|
u64 total = 0;
|
||||||
|
bool bad = false;
|
||||||
|
for (u32 i = 0; i < n && !bad; ++i) {
|
||||||
|
total += a[i];
|
||||||
|
if (total == target) {
|
||||||
|
moves += i - last;
|
||||||
|
last = i + 1;
|
||||||
|
total = 0;
|
||||||
|
} else if (i == n - 1 && total != target || total > target) {
|
||||||
|
bad = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!bad) {
|
||||||
|
cout << moves + n - last << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "sleeping-in-class"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
u32 t;
|
||||||
|
cin >> t;
|
||||||
|
while (t--)
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
187
usaco/bronze/complete-search/three-logos.cc
Normal file
187
usaco/bronze/complete-search/three-logos.cc
Normal file
|
|
@ -0,0 +1,187 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void print(u32 n, u32 x1, u32 y1, u32 x2, u32 y2, u32 x3, u32 y3) {
|
||||||
|
vector<vector<char>> board(n, vector<char>(n, '.'));
|
||||||
|
|
||||||
|
for (u32 i = 0; i < y1; ++i) {
|
||||||
|
for (u32 j = 0; j < x1; ++j) {
|
||||||
|
board[i][j] = 'A';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 sr = 0, sc = x1;
|
||||||
|
if (x1 == n) {
|
||||||
|
sr = y1;
|
||||||
|
sc = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (u32 i = 0; i < y2; ++i) {
|
||||||
|
for (u32 j = 0; j < x2; ++j) {
|
||||||
|
board[sr + i][sc + j] = 'B';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool done = false;
|
||||||
|
for (u32 i = 0; !done && i < n; ++i) {
|
||||||
|
for (u32 j = 0; j < n; ++j) {
|
||||||
|
if (board[i][j] == '.') {
|
||||||
|
sr = i;
|
||||||
|
sc = j;
|
||||||
|
done = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (u32 i2 = 0; i2 < y3; ++i2) {
|
||||||
|
for (u32 j2 = 0; j2 < x3; ++j2) {
|
||||||
|
board[sr + i2][sc + j2] = 'C';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << n << endl;
|
||||||
|
for (const auto &row : board) {
|
||||||
|
for (char c : row) {
|
||||||
|
cout << c;
|
||||||
|
}
|
||||||
|
cout << '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 x1, y1, x2, y2, x3, y3;
|
||||||
|
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
|
||||||
|
|
||||||
|
u32 area = x1 * y1 + x2 * y2 + x3 * y3;
|
||||||
|
|
||||||
|
if (ceil(sqrt(area)) != floor(sqrt(area))) {
|
||||||
|
cout << "-1\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 n = sqrt(area);
|
||||||
|
|
||||||
|
if (x1 != n) {
|
||||||
|
swap(x1, y1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x1 == n) {
|
||||||
|
if (y2 + y3 == n) {
|
||||||
|
swap(x2, y2);
|
||||||
|
swap(x3, y3);
|
||||||
|
print(n, x1, y1, x2, y2, x3, y3);
|
||||||
|
return;
|
||||||
|
} else if (x2 + y3 == n) {
|
||||||
|
swap(x3, y3);
|
||||||
|
print(n, x1, y1, x2, y2, x3, y3);
|
||||||
|
return;
|
||||||
|
} else if (y2 + x3 == n) {
|
||||||
|
swap(x2, y2);
|
||||||
|
print(n, x1, y1, x2, y2, x3, y3);
|
||||||
|
return;
|
||||||
|
} else if (x2 + x3 == n) {
|
||||||
|
print(n, x1, y1, x2, y2, x3, y3);
|
||||||
|
return;
|
||||||
|
} else if (x2 == n && y2 + y3 == n - y1 || x3 == n && y2 + y3 == n - y1) {
|
||||||
|
print(n, x1, y1, x2, y2, x3, y3);
|
||||||
|
return;
|
||||||
|
} else if (y2 == n && x2 + y3 == n - y1) {
|
||||||
|
print(n, x1, y1, y2, x2, x3, y3);
|
||||||
|
return;
|
||||||
|
} else if (y2 == n && x2 + x3 == n - y1) {
|
||||||
|
swap(x2, y2);
|
||||||
|
swap(x3, y3);
|
||||||
|
print(n, x1, y1, x2, y2, x3, y3);
|
||||||
|
return;
|
||||||
|
} else if (y3 == n && y2 + x3 == n - y1) {
|
||||||
|
print(n, x1, y1, y2, x2, y3, x3);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (x1 + x2 != n) {
|
||||||
|
swap(x2, y2);
|
||||||
|
}
|
||||||
|
if (x1 + x2 == n) {
|
||||||
|
if (y1 + y3 != n) {
|
||||||
|
swap(x3, y3);
|
||||||
|
}
|
||||||
|
if (y1 + y3 == n) {
|
||||||
|
print(n, x1, y1, x2, y2, x3, y3);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (x1 + x3 != n)
|
||||||
|
swap(x3, y3);
|
||||||
|
|
||||||
|
if (x1 + x3 == n) {
|
||||||
|
if (y1 + y2 != n) {
|
||||||
|
swap(x2, y2);
|
||||||
|
}
|
||||||
|
if (y1 + y2 == n) {
|
||||||
|
print(n, x1, y1, x2, y2, x3, y3);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << "-1\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
u32 tc = 1;
|
||||||
|
// cin >> tc;
|
||||||
|
|
||||||
|
for (u32 t = 0; t < tc; ++t) {
|
||||||
|
solve();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
168
usaco/bronze/complete-search/tracing.cc
Normal file
168
usaco/bronze/complete-search/tracing.cc
Normal file
|
|
@ -0,0 +1,168 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
vector<pair<i32, i32>> trace(251);
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
/*
|
||||||
|
- # cows patient 0
|
||||||
|
- k bounds
|
||||||
|
|
||||||
|
1. sort by time to "sim" interactions
|
||||||
|
|
||||||
|
- say x and y shake; unless wek one is sick, wedk consequences
|
||||||
|
(i.e. who gets sick)
|
||||||
|
- only ONE starts out
|
||||||
|
|
||||||
|
- guess ONE cow is patient zero, run sim
|
||||||
|
- guess all k from 0 to 251?, taking min of low bound, max of high bound
|
||||||
|
|
||||||
|
k = 250 -> infinity
|
||||||
|
bsearch <- no (if can achieve state w/ k=i, doesn't mean k=i-1, nor k=i+1)
|
||||||
|
|
||||||
|
NOTE: only candidates for patient zero are initial set 0s, since cows stay sick
|
||||||
|
*/
|
||||||
|
|
||||||
|
u32 n, t;
|
||||||
|
cin >> n >> t;
|
||||||
|
string state;
|
||||||
|
cin >> state;
|
||||||
|
state = '0' + state;
|
||||||
|
|
||||||
|
u32 t_;
|
||||||
|
for (u32 i = 0; i < t; ++i) {
|
||||||
|
cin >> t_;
|
||||||
|
cin >> trace[t_].ff >> trace[t_].ss;
|
||||||
|
// NOTE: forgot the one-indexin
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 lb = numeric_limits<u32>::max(), ub = 0;
|
||||||
|
u32 count = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
|
||||||
|
a bunch of cows shake hooves because the gay USACO (usa computing olympiad)
|
||||||
|
just decided to theme everything cows
|
||||||
|
|
||||||
|
and for some K, a cow can only transmit what you have (STDs)
|
||||||
|
after at most K hooveshakes
|
||||||
|
|
||||||
|
but i misread it as saying that if they contract what you have (an STD)
|
||||||
|
they can only transmit the STD up to K days later
|
||||||
|
not after they have sex k times (which is what you do, let k approach
|
||||||
|
infinity)
|
||||||
|
|
||||||
|
ok. then, after that, i missed k=0 basecase
|
||||||
|
then, after that
|
||||||
|
basically, i only counted when someone transmitted an std & infecting someone
|
||||||
|
instead, i should've counted the cow having sex with ANYONE, even if they already
|
||||||
|
have an std, it still counts as a handshake
|
||||||
|
|
||||||
|
core note: once realize wrong, reexamine entire problem solution (has rpercussions) rather than what u see is wrong
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (u32 i = 1; i <= n; ++i) {
|
||||||
|
bool zero = false;
|
||||||
|
for (u32 k = 0; k <= 250; ++k) {
|
||||||
|
vector<u32> shakes(n + 1, 0);
|
||||||
|
string cur_state(n + 1, '0');
|
||||||
|
cur_state[i] = '1';
|
||||||
|
|
||||||
|
for (t_ = 1; t_ <= 250; ++t_) {
|
||||||
|
auto [a, b] = trace[t_];
|
||||||
|
if (a == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cur_state[a] == '1') {
|
||||||
|
++shakes[a];
|
||||||
|
}
|
||||||
|
if (cur_state[b] == '1') {
|
||||||
|
++shakes[b];
|
||||||
|
}
|
||||||
|
if (cur_state[a] == '0' && cur_state[b] == '1' && shakes[b] <= k) {
|
||||||
|
cur_state[a] = '1';
|
||||||
|
} else if (cur_state[b] == '0' && cur_state[a] == '1' &&
|
||||||
|
shakes[a] <= k) {
|
||||||
|
cur_state[b] = '1';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cur_state == state) {
|
||||||
|
zero = true;
|
||||||
|
lb = min(lb, k);
|
||||||
|
ub = max(ub, k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
count += zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << count << ' ' << lb << ' ' << (ub == 250 ? "Infinity" : to_string(ub))
|
||||||
|
<< '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "tracing"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#else
|
||||||
|
freopen(PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen(PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
35
usaco/bronze/simulation/.clangd
Normal file
35
usaco/bronze/simulation/.clangd
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
CompileFlags:
|
||||||
|
Add:
|
||||||
|
-O2
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wpedantic
|
||||||
|
-Wshadow
|
||||||
|
-Wformat=2
|
||||||
|
-Wfloat-equal
|
||||||
|
-Wlogical-op
|
||||||
|
-Wshift-overflow=2
|
||||||
|
-Wnon-virtual-dtor
|
||||||
|
-Wold-style-cast
|
||||||
|
-Wcast-qual
|
||||||
|
-Wuseless-cast
|
||||||
|
-Wno-sign-promotion
|
||||||
|
-Wcast-align
|
||||||
|
-Wunused
|
||||||
|
-Woverloaded-virtual
|
||||||
|
-Wconversion
|
||||||
|
-Wsign-conversion
|
||||||
|
-Wmisleading-indentation
|
||||||
|
-Wduplicated-cond
|
||||||
|
-Wduplicated-branches
|
||||||
|
-Wlogical-op
|
||||||
|
-Wnull-dereference
|
||||||
|
-Wformat=2
|
||||||
|
-Wformat-overflow
|
||||||
|
-Wformat-truncation
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wundef
|
||||||
|
-DLOCAL
|
||||||
|
-Wno-unknown-pragmas
|
||||||
|
-std=c++17
|
||||||
|
-std=c++17
|
||||||
30
usaco/bronze/simulation/compile_flags.txt
Normal file
30
usaco/bronze/simulation/compile_flags.txt
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
-O2
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wpedantic
|
||||||
|
-Wshadow
|
||||||
|
-Wformat=2
|
||||||
|
-Wfloat-equal
|
||||||
|
-Wlogical-op
|
||||||
|
-Wshift-overflow=2
|
||||||
|
-Wnon-virtual-dtor
|
||||||
|
-Wold-style-cast
|
||||||
|
-Wcast-qual
|
||||||
|
-Wuseless-cast
|
||||||
|
-Wno-sign-promotion
|
||||||
|
-Wcast-align
|
||||||
|
-Wunused
|
||||||
|
-Woverloaded-virtual
|
||||||
|
-Wconversion
|
||||||
|
-Wmisleading-indentation
|
||||||
|
-Wduplicated-cond
|
||||||
|
-Wduplicated-branches
|
||||||
|
-Wlogical-op
|
||||||
|
-Wnull-dereference
|
||||||
|
-Wformat=2
|
||||||
|
-Wformat-overflow
|
||||||
|
-Wformat-truncation
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wundef
|
||||||
|
-DLOCAL
|
||||||
|
-std=c++17
|
||||||
5
usaco/bronze/simulation/io/traffic.in
Normal file
5
usaco/bronze/simulation/io/traffic.in
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
4
|
||||||
|
on 1 1
|
||||||
|
none 10 14
|
||||||
|
none 11 15
|
||||||
|
off 2 3
|
||||||
5
usaco/bronze/simulation/io/traffic.out
Normal file
5
usaco/bronze/simulation/io/traffic.out
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
10 13
|
||||||
|
8 12
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 3.91054 ms
|
||||||
29
usaco/bronze/simulation/makefile
Normal file
29
usaco/bronze/simulation/makefile
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
.PHONY: run debug clean setup init
|
||||||
|
|
||||||
|
VERSION ?= 20
|
||||||
|
|
||||||
|
SRC = $(word 2,$(MAKECMDGOALS))
|
||||||
|
|
||||||
|
.SILENT:
|
||||||
|
|
||||||
|
run:
|
||||||
|
sh scripts/run.sh $(SRC)
|
||||||
|
|
||||||
|
debug:
|
||||||
|
sh scripts/debug.sh $(SRC)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf build/*
|
||||||
|
|
||||||
|
setup:
|
||||||
|
test -d build || mkdir -p build
|
||||||
|
test -d io || mkdir -p io
|
||||||
|
test -d scripts || mkdir -p scripts
|
||||||
|
test -f compile_flags.txt || cp $(HOME)/.config/cp-template/compile_flags.txt . && echo -std=c++$(VERSION) >>compile_flags.txt
|
||||||
|
test -f .clangd || cp $(HOME)/.config/cp-template/.clangd . && echo -e "\t\t-std=c++$(VERSION)" >>.clangd
|
||||||
|
|
||||||
|
init:
|
||||||
|
make setup
|
||||||
|
|
||||||
|
%:
|
||||||
|
@:
|
||||||
29
usaco/bronze/simulation/scripts/debug.sh
Normal file
29
usaco/bronze/simulation/scripts/debug.sh
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./scripts/utils.sh
|
||||||
|
|
||||||
|
SRC="$1"
|
||||||
|
BASE=$(basename "$SRC" .cc)
|
||||||
|
INPUT="${BASE}.in"
|
||||||
|
OUTPUT="${BASE}.out"
|
||||||
|
DBG_BIN="${BASE}.debug"
|
||||||
|
|
||||||
|
test -d build || mkdir -p build
|
||||||
|
test -d io || mkdir -p io
|
||||||
|
|
||||||
|
test -f "$INPUT" && test ! -f "io/$INPUT" && mv "$INPUT" "io/"
|
||||||
|
test -f "$OUTPUT" && test ! -f "io/$OUTPUT" && mv "$OUTPUT" "io/"
|
||||||
|
|
||||||
|
test -f "io/$INPUT" || touch "io/$INPUT"
|
||||||
|
test -f "io/$OUTPUT" || touch "io/$OUTPUT"
|
||||||
|
|
||||||
|
INPUT="io/$INPUT"
|
||||||
|
OUTPUT="io/$OUTPUT"
|
||||||
|
DBG_BIN="build/$DBG_BIN"
|
||||||
|
|
||||||
|
compile_source "$SRC" "$DBG_BIN" "$OUTPUT" @debug_flags.txt
|
||||||
|
CODE=$?
|
||||||
|
test $CODE -gt 0 && exit $CODE
|
||||||
|
|
||||||
|
execute_binary "$DBG_BIN" "$INPUT" "$OUTPUT"
|
||||||
|
exit $?
|
||||||
29
usaco/bronze/simulation/scripts/run.sh
Normal file
29
usaco/bronze/simulation/scripts/run.sh
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./scripts/utils.sh
|
||||||
|
|
||||||
|
SRC="$1"
|
||||||
|
BASE=$(basename "$SRC" .cc)
|
||||||
|
INPUT="${BASE}.in"
|
||||||
|
OUTPUT="${BASE}.out"
|
||||||
|
RUN_BIN="${BASE}.run"
|
||||||
|
|
||||||
|
test -d build || mkdir -p build
|
||||||
|
test -d io || mkdir -p io
|
||||||
|
|
||||||
|
test -f "$INPUT" && test ! -f "io/$INPUT" && mv "$INPUT" "io/"
|
||||||
|
test -f "$OUTPUT" && test ! -f "io/$OUTPUT" && mv "$OUTPUT" "io/"
|
||||||
|
|
||||||
|
test -f "io/$INPUT" || touch "io/$INPUT"
|
||||||
|
test -f "io/$OUTPUT" || touch "io/$OUTPUT"
|
||||||
|
|
||||||
|
INPUT="io/$INPUT"
|
||||||
|
OUTPUT="io/$OUTPUT"
|
||||||
|
RUN_BIN="build/$RUN_BIN"
|
||||||
|
|
||||||
|
compile_source "$SRC" "$RUN_BIN" "$OUTPUT" ""
|
||||||
|
CODE=$?
|
||||||
|
test $CODE -gt 0 && exit $CODE
|
||||||
|
|
||||||
|
execute_binary "$RUN_BIN" "$INPUT" "$OUTPUT"
|
||||||
|
exit $?
|
||||||
53
usaco/bronze/simulation/scripts/utils.sh
Normal file
53
usaco/bronze/simulation/scripts/utils.sh
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
execute_binary() {
|
||||||
|
binary="$1"
|
||||||
|
input="$2"
|
||||||
|
output="$3"
|
||||||
|
|
||||||
|
start=$(date '+%s.%N')
|
||||||
|
timeout 2s ./"$binary" <"$input" >"$output" 2>&1
|
||||||
|
CODE=$?
|
||||||
|
end=$(date '+%s.%N')
|
||||||
|
truncate -s "$(head -n 1000 "$output" | wc -c)" "$output"
|
||||||
|
|
||||||
|
if [ $CODE -ge 124 ]; then
|
||||||
|
MSG=''
|
||||||
|
case $CODE in
|
||||||
|
124) MSG='TIMEOUT' ;;
|
||||||
|
128) MSG='SIGILL' ;;
|
||||||
|
130) MSG='SIGABRT' ;;
|
||||||
|
131) MSG='SIGBUS' ;;
|
||||||
|
136) MSG='SIGFPE' ;;
|
||||||
|
135) MSG='SIGSEGV' ;;
|
||||||
|
137) MSG='SIGPIPE' ;;
|
||||||
|
139) MSG='SIGTERM' ;;
|
||||||
|
esac
|
||||||
|
[ $CODE -ne 124 ] && sed -i '$d' "$output"
|
||||||
|
test -n "$MSG" && printf '\n[code]: %s (%s)' "$CODE" "$MSG" >>"$output"
|
||||||
|
else
|
||||||
|
printf '\n[code]: %s' "$CODE" >>"$output"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '\n[time]: %s ms' "$(awk "BEGIN {print ($end - $start) * 1000}")" >>$output
|
||||||
|
return $CODE
|
||||||
|
}
|
||||||
|
|
||||||
|
compile_source() {
|
||||||
|
src="$1"
|
||||||
|
bin="$2"
|
||||||
|
output="$3"
|
||||||
|
flags="$4"
|
||||||
|
|
||||||
|
test -f "$bin" && rm "$bin" || true
|
||||||
|
g++ @compile_flags.txt $flags "$src" -o "$bin" 2>"$output"
|
||||||
|
CODE=$?
|
||||||
|
|
||||||
|
if [ $CODE -gt 0 ]; then
|
||||||
|
printf '\n[code]: %s' "$CODE" >>"$output"
|
||||||
|
return $CODE
|
||||||
|
else
|
||||||
|
echo '' >"$output"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
122
usaco/bronze/simulation/traffic.cc
Normal file
122
usaco/bronze/simulation/traffic.cc
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T>
|
||||||
|
constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
[[nodiscard]] static T sc(auto&& x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
[[nodiscard]] static T sz(auto&& x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() {
|
||||||
|
std::cout << "NO\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
static void YES() {
|
||||||
|
std::cout << "YES\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 n;
|
||||||
|
cin >> n;
|
||||||
|
|
||||||
|
string type;
|
||||||
|
i64 l, r;
|
||||||
|
vector<tuple<string, i64, i64>> segments;
|
||||||
|
for (u32 i = 0; i < n; ++i) {
|
||||||
|
cin >> type >> l >> r;
|
||||||
|
segments.emplace_back(type, l, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
i64 lb = 0, ub = 1e9;
|
||||||
|
for (auto it = segments.rbegin(); it != segments.rend(); ++it) {
|
||||||
|
tie(type, l, r) = *it;
|
||||||
|
if (type == "none") {
|
||||||
|
lb = max(lb, l);
|
||||||
|
ub = min(ub, r);
|
||||||
|
} else if (type == "off") {
|
||||||
|
lb += l;
|
||||||
|
ub += r;
|
||||||
|
} else if (type == "on") {
|
||||||
|
lb = max(lb - r, (i64)0);
|
||||||
|
ub = max(ub - l, (i64)0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << lb << ' ' << ub << '\n';
|
||||||
|
|
||||||
|
lb = 0, ub = 1e9;
|
||||||
|
for (auto& segment : segments) {
|
||||||
|
// NOTE: how does this work?
|
||||||
|
tie(type, l, r) = segment;
|
||||||
|
if (type == "none") {
|
||||||
|
lb = max(lb, l);
|
||||||
|
ub = min(ub, r);
|
||||||
|
} else if (type == "off") {
|
||||||
|
lb = max(lb - r, (i64)0);
|
||||||
|
ub = max(ub - l, (i64)0);
|
||||||
|
} else if (type == "on") {
|
||||||
|
lb += l;
|
||||||
|
ub += r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << lb << ' ' << ub << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "traffic"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#else
|
||||||
|
freopen(PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen(PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
37
usaco/bronze/sorting/.clangd
Normal file
37
usaco/bronze/sorting/.clangd
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
CompileFlags:
|
||||||
|
Add:
|
||||||
|
-O2
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wpedantic
|
||||||
|
-Wshadow
|
||||||
|
-Wformat=2
|
||||||
|
-Wfloat-equal
|
||||||
|
-Wlogical-op
|
||||||
|
-Wshift-overflow=2
|
||||||
|
-Wnon-virtual-dtor
|
||||||
|
-Wold-style-cast
|
||||||
|
-Wcast-qual
|
||||||
|
-Wuseless-cast
|
||||||
|
-Wno-sign-promotion
|
||||||
|
-Wcast-align
|
||||||
|
-Wunused
|
||||||
|
-Woverloaded-virtual
|
||||||
|
-Wconversion
|
||||||
|
-Wsign-conversion
|
||||||
|
-Wmisleading-indentation
|
||||||
|
-Wduplicated-cond
|
||||||
|
-Wduplicated-branches
|
||||||
|
-Wlogical-op
|
||||||
|
-Wnull-dereference
|
||||||
|
-Wformat=2
|
||||||
|
-Wformat-overflow
|
||||||
|
-Wformat-truncation
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wundef
|
||||||
|
-DLOCAL
|
||||||
|
-Wno-unknown-pragmas
|
||||||
|
-std=c++23
|
||||||
|
-std=c++23
|
||||||
|
-std=c++17
|
||||||
|
-std=c++17
|
||||||
30
usaco/bronze/sorting/compile_flags.txt
Normal file
30
usaco/bronze/sorting/compile_flags.txt
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
-O2
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
-Wpedantic
|
||||||
|
-Wshadow
|
||||||
|
-Wformat=2
|
||||||
|
-Wfloat-equal
|
||||||
|
-Wlogical-op
|
||||||
|
-Wshift-overflow=2
|
||||||
|
-Wnon-virtual-dtor
|
||||||
|
-Wold-style-cast
|
||||||
|
-Wcast-qual
|
||||||
|
-Wuseless-cast
|
||||||
|
-Wno-sign-promotion
|
||||||
|
-Wcast-align
|
||||||
|
-Wunused
|
||||||
|
-Woverloaded-virtual
|
||||||
|
-Wconversion
|
||||||
|
-Wmisleading-indentation
|
||||||
|
-Wduplicated-cond
|
||||||
|
-Wduplicated-branches
|
||||||
|
-Wlogical-op
|
||||||
|
-Wnull-dereference
|
||||||
|
-Wformat=2
|
||||||
|
-Wformat-overflow
|
||||||
|
-Wformat-truncation
|
||||||
|
-Wdouble-promotion
|
||||||
|
-Wundef
|
||||||
|
-DLOCAL
|
||||||
|
-std=c++17
|
||||||
98
usaco/bronze/sorting/cow-college.cc
Normal file
98
usaco/bronze/sorting/cow-college.cc
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 n;
|
||||||
|
cin >> n;
|
||||||
|
vector<u64> a(n);
|
||||||
|
for (auto &e : a)
|
||||||
|
cin >> e;
|
||||||
|
|
||||||
|
sort(all(a));
|
||||||
|
u64 ans = 0, charge = 1e9;
|
||||||
|
|
||||||
|
// for (u32 i = 0; i < n; ++i) {
|
||||||
|
// auto it = lower_bound(all(a), a[i]);
|
||||||
|
//
|
||||||
|
// u32 cnt = distance(it, a.end());
|
||||||
|
// if (cnt * a[i] > ans) {
|
||||||
|
// ans = cnt * a[i];
|
||||||
|
// charge = a[i];
|
||||||
|
// } else if (cnt * a[i] == ans) {
|
||||||
|
// charge = min(charge, a[i]);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
for (u32 i = 0; i < n; ++i) {
|
||||||
|
if (ans < (n - i) * a[i]) {
|
||||||
|
ans = (n - i) * a[i];
|
||||||
|
charge = a[i];
|
||||||
|
} else if (ans == (n - i) * a[i]) {
|
||||||
|
charge = min(charge, a[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << ans << ' ' << charge;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
#define PROBLEM_NAME "cow-college"
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
freopen("io/" PROBLEM_NAME ".in", "r", stdin);
|
||||||
|
freopen("io/" PROBLEM_NAME ".out", "w", stdout);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
solve();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
14
usaco/bronze/sorting/debug_flags.txt
Normal file
14
usaco/bronze/sorting/debug_flags.txt
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
-g3
|
||||||
|
-fsanitize=address,undefined
|
||||||
|
-fsanitize=float-divide-by-zero
|
||||||
|
-fsanitize=float-cast-overflow
|
||||||
|
-fno-sanitize-recover=all
|
||||||
|
-fstack-protector-all
|
||||||
|
-fstack-usage
|
||||||
|
-fno-omit-frame-pointer
|
||||||
|
-fno-inline
|
||||||
|
-ffunction-sections
|
||||||
|
-D_GLIBCXX_DEBUG
|
||||||
|
-D_GLIBCXX_DEBUG_PEDANTIC
|
||||||
|
-DLOCAL
|
||||||
|
-std=c++20
|
||||||
80
usaco/bronze/sorting/distinct-numbers.cc
Normal file
80
usaco/bronze/sorting/distinct-numbers.cc
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
#include <bits/stdc++.h> // {{{
|
||||||
|
|
||||||
|
// https://codeforces.com/blog/entry/96344
|
||||||
|
|
||||||
|
#pragma GCC optimize("O2,unroll-loops")
|
||||||
|
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
using i32 = int32_t;
|
||||||
|
using u32 = uint32_t;
|
||||||
|
using i64 = int64_t;
|
||||||
|
using u64 = uint64_t;
|
||||||
|
using f64 = double;
|
||||||
|
using f128 = long double;
|
||||||
|
|
||||||
|
#if __cplusplus >= 202002L
|
||||||
|
template <typename T> constexpr T MIN = std::numeric_limits<T>::min();
|
||||||
|
|
||||||
|
template <typename T> constexpr T MAX = std::numeric_limits<T>::max();
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sc(auto &&x) {
|
||||||
|
return static_cast<T>(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> [[nodiscard]] static T sz(auto &&x) {
|
||||||
|
return static_cast<T>(x.size());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void NO() { std::cout << "NO\n"; }
|
||||||
|
|
||||||
|
static void YES() { std::cout << "YES\n"; }
|
||||||
|
|
||||||
|
#define all(x) (x).begin(), (x).end()
|
||||||
|
#define rall(x) (x).rbegin(), (x).rend()
|
||||||
|
#define ff first
|
||||||
|
#define ss second
|
||||||
|
|
||||||
|
#ifdef LOCAL
|
||||||
|
#define db(...) std::print(__VA_ARGS__)
|
||||||
|
#define dbln(...) std::println(__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define db(...)
|
||||||
|
#define dbln(...)
|
||||||
|
#endif
|
||||||
|
// }}}
|
||||||
|
|
||||||
|
void solve() {
|
||||||
|
u32 n;
|
||||||
|
cin >> n;
|
||||||
|
vector<u32> a(n);
|
||||||
|
for (auto &e : a)
|
||||||
|
cin >> e;
|
||||||
|
sort(all(a));
|
||||||
|
|
||||||
|
u32 ans = 0;
|
||||||
|
for (u32 i = 0; i < n;) {
|
||||||
|
++ans;
|
||||||
|
while (i + 1 < n && a[i + 1] == a[i])
|
||||||
|
++i;
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
cout << ans << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() { // {{{
|
||||||
|
cin.tie(nullptr)->sync_with_stdio(false);
|
||||||
|
cin.exceptions(cin.failbit);
|
||||||
|
|
||||||
|
u32 tc = 1;
|
||||||
|
// cin >> tc;
|
||||||
|
|
||||||
|
for (u32 t = 0; t < tc; ++t) {
|
||||||
|
solve();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// }}}
|
||||||
2
usaco/bronze/sorting/io/cow-college.in
Normal file
2
usaco/bronze/sorting/io/cow-college.in
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
4
|
||||||
|
1 6 4 6
|
||||||
3
usaco/bronze/sorting/io/cow-college.out
Normal file
3
usaco/bronze/sorting/io/cow-college.out
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
12 4
|
||||||
|
[code]: 0
|
||||||
|
[time]: 4.01235 ms
|
||||||
2
usaco/bronze/sorting/io/distinct-numbers.in
Normal file
2
usaco/bronze/sorting/io/distinct-numbers.in
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
10
|
||||||
|
5 9 5 5 10 9 3 1 8 8
|
||||||
4
usaco/bronze/sorting/io/distinct-numbers.out
Normal file
4
usaco/bronze/sorting/io/distinct-numbers.out
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
6
|
||||||
|
|
||||||
|
[code]: 0
|
||||||
|
[time]: 4.40502 ms
|
||||||
2
usaco/bronze/sorting/io/kayaking.in
Normal file
2
usaco/bronze/sorting/io/kayaking.in
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
4
|
||||||
|
1 2 3 4 5 6 100 1000
|
||||||
3
usaco/bronze/sorting/io/kayaking.out
Normal file
3
usaco/bronze/sorting/io/kayaking.out
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
3
|
||||||
|
[code]: 0
|
||||||
|
[time]: 3.99446 ms
|
||||||
8
usaco/bronze/sorting/io/notlast.in
Normal file
8
usaco/bronze/sorting/io/notlast.in
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
7
|
||||||
|
Bessie 1
|
||||||
|
Elsie 1
|
||||||
|
Daisy 2
|
||||||
|
Gertie 2
|
||||||
|
Annabelle 3
|
||||||
|
Maggie 4
|
||||||
|
Henrietta 4
|
||||||
3
usaco/bronze/sorting/io/notlast.out
Normal file
3
usaco/bronze/sorting/io/notlast.out
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
Tie
|
||||||
|
[code]: 0
|
||||||
|
[time]: 3.75843 ms
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue