Submission #220668

#TimeUsernameProblemLanguageResultExecution timeMemory
220668srvltJJOOII 2 (JOI20_ho_t2)C++14
100 / 100
16 ms7180 KiB
//#pragma GCC optimize("Ofast") //#pragma GCC target("avx,avx2,fma") #include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define db long double #define pb push_back #define ppb pop_back #define fi first #define se second #define mp make_pair #define all(x) (x).begin(), (x).end() void dout() { cerr << '\n'; } template <typename Head, typename... Tail> void dout(Head H, Tail... T) { cerr << " " << H; dout(T...); } #ifdef LOCAL #define dbg(...) cerr << #__VA_ARGS__, dout(__VA_ARGS__) #else #define dbg(...) ; #endif mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); typedef pair <int, int> pii; const int N = 2e5 + 123; int n, k, p[3][N], sf[3][N]; int l[3][N], r[3][N]; int main() { ios_base::sync_with_stdio(false), cin.tie(NULL); #ifdef LOCAL freopen("input.txt", "r", stdin); #endif string s; cin >> n >> k >> s; for (int i = 1; i <= n; i++) { for (int j = 0; j < 3; j++) { p[j][i] = p[j][i - 1]; } if (s[i - 1] == 'J') { p[0][i]++; l[0][p[0][i]] = i; } if (s[i - 1] == 'O') { p[1][i]++; l[1][p[1][i]] = i; } if (s[i - 1] == 'I') { p[2][i]++; l[2][p[2][i]] = i; } } for (int i = n; i >= 1; i--) { for (int j = 0; j < 3; j++) { sf[j][i] = sf[j][i + 1]; } if (s[i - 1] == 'J') { sf[0][i]++; r[0][sf[0][i]] = i; } if (s[i - 1] == 'O') { sf[1][i]++; r[1][sf[1][i]] = i; } if (s[i - 1] == 'I') { sf[2][i]++; r[2][sf[2][i]] = i; } } int j = 1, ans = N; for (int i = 1; i <= n; i++) { while (j < i && p[1][i] - p[1][j] >= k) { j++; } if (s[i - 1] == 'O' && p[1][i] - p[1][j - 1] == k) { if (r[0][sf[0][j] + k] && l[2][p[2][i] + k]) { ans = min(ans, l[2][p[2][i] + k] - r[0][sf[0][j] + k]); } } } if (ans == N) { cout << -1; return 0; } cout << ans - 3 * k + 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...