제출 #704001

#제출 시각아이디문제언어결과실행 시간메모리
704001KenIsGeniusJJOOII 2 (JOI20_ho_t2)C++17
100 / 100
21 ms7124 KiB
#include <bits/stdc++.h> #define F first #define S second #define pb push_back #define all(x) (x).begin(), (x).end() #define int long long using namespace std; #ifdef LOCAL #define WOSAOJI freopen("in.txt", "r", stdin); #else #define WOSAOJI ios_base::sync_with_stdio(0), cin.tie(0); #endif #define chmax(a, b) (a) = (a) > (b) ? (a) : (b) #define chmin(a, b) (a) = (a) < (b) ? (a) : (b) int n, k; string s; int calc(int i, vector<vector<int>> &cnt) { int here = i; i--; i = lower_bound(all(cnt[0]), cnt[0][i] + k) - cnt[0].begin(); if (i > n) return 1 << 30; i = lower_bound(all(cnt[1]), cnt[1][i] + k) - cnt[1].begin(); if (i > n) return 1 << 30; i = lower_bound(all(cnt[2]), cnt[2][i] + k) - cnt[2].begin(); if (i > n) return 1 << 30; return i - here + 1; } signed main() { WOSAOJI cin >> n >> k; cin >> s; vector<vector<int>> cnt(3, vector<int>(n + 1, 0)); s = " " + s; for (int i = 1; i <= n; i++) { for (int j = 0; j < 3; j++) cnt[j][i] = cnt[j][i - 1]; if (s[i] == 'J') cnt[0][i]++; if (s[i] == 'O') cnt[1][i]++; if (s[i] == 'I') cnt[2][i]++; } int ans = 1 << 30; for (int i = 1; i <= n; i++) { if (s[i] == 'J') chmin(ans, calc(i, cnt)); } if (ans == 1 << 30) ans = k * 3 - 1; cout << ans - k * 3 << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...