Submission #1279530

#TimeUsernameProblemLanguageResultExecution timeMemory
1279530friendiksJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
8 ms6900 KiB
#ifndef LOCAL #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #pragma GCC diagnostic ignored "-Wpedantic" #endif #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; auto seed = chrono::high_resolution_clock::now().time_since_epoch().count(); mt19937 rnd(seed); template<typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; template<typename T, typename V> using table = gp_hash_table<T, V>; using i128 = __int128; using ll = long long; using ld = long double; using uint = unsigned int; using ull = unsigned long long; const ll INF = 1e13; const int inf = 1e9; const int maxk = 140; const int MOD = 1e9 + 7; const double pi = acos(-1); const int P = 5167; const int L = 26; const ld EPS = 1e-7; const int W = 3; const int MBIT = 18; const int maxn = 2e5 + 7; const int B = 550; template<typename T, typename V> void fill(T &container, V value) { for (auto &c : container) c = value; } # define int ll void solve() { int n, k; cin >> n >> k; string s; cin >> s; vector<int> J(n), O(n), I(n); deque<int> jj, oo, ii; for (int i = n - 1; i >= 0; --i) { if (s[i] == 'J') jj.push_front(i); if (s[i] == 'O') oo.push_front(i); if (s[i] == 'I') ii.push_front(i); if (jj.size() < k) J[i] = -1; else J[i] = jj[k - 1]; if (oo.size() < k) O[i] = -1; else O[i] = oo[k - 1]; if (ii.size() < k) I[i] = -1; else I[i] = ii[k - 1]; } int ans = INF; for (int l = 0; l < n; ++l) { int j = J[l]; if (j != -1) { int o = O[j]; if (o != -1) { int i = I[o]; if (i != -1) { ans = min(ans, i - l + 1 - 3 * k); } } } } if (ans == INF) ans = -1; cout << ans; } signed main() { #ifdef LOCAL freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif ios_base::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(9); int t = 1; //cin >> t; while (t--) solve(); #ifdef LOCAL cout << "\n\n\n=====================================================\nProgram worked for: "; cout << (ld) clock() / CLOCKS_PER_SEC << "s"; #endif //stress(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...