Submission #293129

#TimeUsernameProblemLanguageResultExecution timeMemory
293129HeheheJJOOII 2 (JOI20_ho_t2)C++14
100 / 100
8 ms5704 KiB
#include<bits/stdc++.h> //:3 using namespace std; typedef long long ll; #define all(a) (a).begin(), (a).end() #define ff first #define ss second #define pb push_back #define mp make_pair #define pi pair<int, int> #define sz(x) (int)((x).size()) #define int long long const int dx[] = {0, 1, 0, -1}; const int dy[] = {1, 0, -1, 0}; const ll inf = 2e9; const ll mod = 1e9 + 7; const int N = 2e5 + 11; const int X = 1e6; const ll INF64 = 3e18 + 1; const double eps = 1e-14; const double PI = acos(-1); //ifstream in(".in"); //ofstream out(".out"); int n, k, J[N], O[N], I[N]; void solve(){ cin >> n >> k; string s; cin >> s;; s = '/' + s; for(int i = 1; i <= n; i++){ J[i] = J[i - 1] + (s[i] == 'J'); O[i] = O[i - 1] + (s[i] == 'O'); I[i] = I[i - 1] + (s[i] == 'I'); } int j = 1, o = 1, i = 1, ans = n + 1; for(int l = 1; l <= n; l++){ while(j <= n && (J[j] - J[l - 1]) < k){ j++; } if(j == n + 1)break; while(o <= n && (O[o] - O[j]) < k){ o++; } if(o == n + 1)break; while(i <= n && (I[i] - I[o]) < k){ i++; } if(i == n + 1)break; ans = min(ans, i - l + 1 - 3*k); //cout << i << ' ' << j << ' ' << i - l << '\n'; } if(ans == n + 1)cout << "-1" << '\n';else cout << ans << '\n'; } int32_t main(){ ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0); //cout << setprecision(6) << fixed; int T = 1; //cin >> T; while(T--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...