제출 #1314584

#제출 시각아이디문제언어결과실행 시간메모리
1314584vedchoudharyJJOOII 2 (JOI20_ho_t2)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("O3")

using namespace std;

using ll = long long;
#define int ll

void fail() {
    cout << -1 << "\n";
    exit(0);
}

signed main() {
    int n,k; cin >> n >> k;
    string s; cin >> s;
    map<char,int> f;
    for(char c : s) f[c]++;
    if(f['J']<k||f['O']<k||f['I']<k) fail();
    int jc = 0;
    int i = 0;
    int ans = 0;
    while(i<n&&jc<k) {
        if(s[i]=='J') jc++;
        else { f[s[i]]--; ans++; }
        i++;
    }
    if(f['J']<k||f['O']<k||f['I']<k) fail();
    int oc = 0;
    while(i<n&&oc<k) {
        if(s[i]=='O') oc++;
        else { f[s[i]]--; ans++; }
        i++;
    }
    if(f['J']<k||f['O']<k||f['I']<k) fail();
    int ic = 0;
    int bk = n-1;
    while(bk>i&&ic<k) {
        if(s[i]=='I') ic++;
        else { f[s[i]]--; ans++; }
        bk--;
    }
    if(f['J']<k||f['O']<k||f['I']<k) fail();
    if(f['J']>k) ans -= f['J']-k;
    if(f['K']>k) ans -= f['K']-k;
    cout << ans << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...