diff options
| -rwxr-xr-x | codeforces/Fence/main.cpp | 150 | ||||
| -rw-r--r-- | codeforces/Fence/main_input0.txt | 2 | ||||
| -rw-r--r-- | codeforces/Fence/main_input1.txt | 2 | ||||
| -rw-r--r-- | codeforces/Fence/main_input2.txt | 2 | ||||
| -rw-r--r-- | codeforces/Fence/main_output0.txt | 1 | ||||
| -rw-r--r-- | codeforces/Fence/main_output1.txt | 1 | ||||
| -rw-r--r-- | codeforces/Fence/main_output2.txt | 1 | ||||
| -rwxr-xr-x | contests/Round895/B/main.cpp | 7 | ||||
| -rwxr-xr-x | contests/Round895/E/main.cpp | 30 |
9 files changed, 179 insertions, 17 deletions
diff --git a/codeforces/Fence/main.cpp b/codeforces/Fence/main.cpp new file mode 100755 index 0000000..bc828e0 --- /dev/null +++ b/codeforces/Fence/main.cpp @@ -0,0 +1,150 @@ +#include <algorithm> +#include <bits/stdc++.h> +using namespace std; + +using ll = long long; +using pii = pair<int, int>; +using vpi = vector<pii>; +using vi = vector<int>; +using vll = vector<long long>; +using mpii = map<int, int>; +using mpll = map<ll, ll>; +using db = long double; + +#define pb push_back +#define all(x) (x).begin(), (x).end() +#define rall(x) (x).rbegin(), (x).rend() +#define lb lower_bound +#define ub upper_bound +#define make_unique(x) \ + sort(all((x))); \ + (x).resize(unique(all((x))) - (x).begin()) +#define ceil(a, b) ((a) + (b)-1) / (b) + +const int MOD = (int)1e9 + 7; +const db PI = acos((db)-1); +const int dx[4]{1, 0, -1, 0}; +const int dy[4]{0, 1, 0, -1}; + +template <typename K, typename V> +ostream &operator<<(ostream &os, const pair<K, V> &p); +template <typename T> ostream &operator<<(ostream &os, const vector<T> &vec); +template <typename K, typename V> +ostream &operator<<(ostream &os, const map<K, V> &m); +template <typename K, typename V> +ostream &operator<<(ostream &os, const unordered_map<K, V> &m); +template <typename T> ostream &operator<<(ostream &os, const set<T> &s); +template <typename T> +ostream &operator<<(ostream &os, const unordered_set<T> &s); + +template <typename K, typename V> +ostream &operator<<(ostream &os, const pair<K, V> &p) { + os << "(" << p.first << ", " << p.second << ")"; + return os; +} + +template <typename T> ostream &operator<<(ostream &os, const vector<T> &vec) { + os << "{"; + for (size_t i = 0; i < vec.size(); ++i) { + if (i > 0) + os << ", "; + os << vec[i]; + } + os << "}"; + return os; +} + +template <typename K, typename V> +ostream &operator<<(ostream &os, const map<K, V> &m) { + os << "{"; + for (const auto &p : m) { + os << p.first << ": " << p.second << ", "; + } + os << "}"; + return os; +} + +template <typename K, typename V> +ostream &operator<<(ostream &os, const unordered_map<K, V> &m) { + os << "{"; + for (const auto &p : m) { + os << p.first << ": " << p.second << ", "; + } + os << "}"; + return os; +} + +template <typename T> ostream &operator<<(ostream &os, const set<T> &s) { + int i = 0; + os << "{"; + for (const auto &e : s) { + if (i > 0) + os << ", "; + os << e; + i++; + } + os << "}"; + return os; +} + +template <typename T> +ostream &operator<<(ostream &os, const unordered_set<T> &s) { + int i = 0; + os << "{"; + for (const auto &e : s) { + if (i > 0) + os << ", "; + os << e; + i++; + } + os << "}"; + return os; +} + +void dbg() { cerr << "\n"; } + +template <typename T, typename... TS> void dbg(T val, TS... vals) { + cerr << val << " "; + dbg(vals...); +} + +/* stuff you should look for: + --------------------------- + * special cases (n=1?) + * int overflow, array bounds + * do smth instead of nothing and stay organized + * WRITE STUFF DOWN + * DON'T GET STUCK ON ONE APPROACH + */ + +// 1 2 3 4 5 +// 3 2 6 5 4 + +void solve() { + int n, k; + cin >> n >> k; + vi v(n); + for (auto &x : v) { + cin >> x; + } + ll ans = 0; + for (int i = 0; i < k; i++) { + ans += v[i]; + } + int idx = 1; + ll mn = ans; + for (int i = 0; i < n - k; i++) { + if (mn > ans + v[i + k] - v[i]) { + idx = i + 2; + } + ans += v[i + k] - v[i]; + mn = min(mn, ans); + } + cout << idx << '\n'; +} + +int main() { + ios_base::sync_with_stdio(false); + cin.tie(NULL); + solve(); +} diff --git a/codeforces/Fence/main_input0.txt b/codeforces/Fence/main_input0.txt new file mode 100644 index 0000000..6e3da58 --- /dev/null +++ b/codeforces/Fence/main_input0.txt @@ -0,0 +1,2 @@ +7 3 +1 2 6 1 1 7 1 diff --git a/codeforces/Fence/main_input1.txt b/codeforces/Fence/main_input1.txt new file mode 100644 index 0000000..fa92449 --- /dev/null +++ b/codeforces/Fence/main_input1.txt @@ -0,0 +1,2 @@ +10 5 +1 2 3 1 2 2 3 1 4 5
\ No newline at end of file diff --git a/codeforces/Fence/main_input2.txt b/codeforces/Fence/main_input2.txt new file mode 100644 index 0000000..3fb68bb --- /dev/null +++ b/codeforces/Fence/main_input2.txt @@ -0,0 +1,2 @@ +2 1 +20 1
\ No newline at end of file diff --git a/codeforces/Fence/main_output0.txt b/codeforces/Fence/main_output0.txt new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/codeforces/Fence/main_output0.txt @@ -0,0 +1 @@ +3 diff --git a/codeforces/Fence/main_output1.txt b/codeforces/Fence/main_output1.txt new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/codeforces/Fence/main_output1.txt @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/codeforces/Fence/main_output2.txt b/codeforces/Fence/main_output2.txt new file mode 100644 index 0000000..d8263ee --- /dev/null +++ b/codeforces/Fence/main_output2.txt @@ -0,0 +1 @@ +2
\ No newline at end of file diff --git a/contests/Round895/B/main.cpp b/contests/Round895/B/main.cpp index 25927ff..81803b7 100755 --- a/contests/Round895/B/main.cpp +++ b/contests/Round895/B/main.cpp @@ -120,16 +120,11 @@ template <typename T, typename... TS> void dbg(T val, TS... vals) { void solve() { int n; cin >> n; - vector<vi> v(201); int mn = INT_MAX; for (int i = 0; i < n; i++) { int s, d; cin >> s >> d; - if (d % 2 == 0) { - mn = min(mn, s + (d / 2 - 1)); - } else { - mn = min(mn, s + d / 2); - } + mn = min(mn , s + (d - 1) / 2); } cout << mn << endl; } diff --git a/contests/Round895/E/main.cpp b/contests/Round895/E/main.cpp index c318b79..a507ff4 100755 --- a/contests/Round895/E/main.cpp +++ b/contests/Round895/E/main.cpp @@ -120,32 +120,40 @@ void solve() { int n; cin >> n; vi v(n); + vi pfx(n + 1); + pfx[0] = 0; for (auto &x : v) { cin >> x; } + for (int i = 0; i < n; i++) { + pfx[i + 1] = pfx[i] ^ v[i]; + } string s; cin >> s; int q; cin >> q; + int x1 = 0, x2 = 0; + for (int i = 0; i < n; i++) { + if (s[i] == '0') { + x1 ^= v[i]; + } else { + x2 ^= v[i]; + } + } for (int i = 0; i < q; i++) { int op, x; cin >> op >> x; if (op == 1) { - x--; int y; cin >> y; - y--; - for (int j = x; j <= y; j++) { - s[j] = (s[j] == '0') ? '1' : '0'; - } + x1 ^= pfx[y] ^ pfx[x - 1]; + x2 ^= pfx[y] ^ pfx[x - 1]; } else { - int ans = 0; - for (int j = 0; j < n; j++) { - if (s[j] == x + '0') { - ans ^= v[j]; - } + if (x == 0) { + cout << x1 << ' '; + } else { + cout << x2 << ' '; } - cout << ans << ' '; } } cout << '\n'; |
