Submission #1180382

#TimeUsernameProblemLanguageResultExecution timeMemory
1180382bbartekJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
5 ms3404 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define st first #define nd second #define pb push_back const int maxn = 2e5+7; int sumy_j[maxn]; int sumy_i[maxn]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n,k; cin>>n>>k; string s; cin>>s; vector<int> wystapienia_j; vector<int> wystapienia_i; vector<int> wystapienia_o; for(int i=1;i<=n;i++){ if(s[i-1] == 'J'){ wystapienia_j.pb(i); } else if(s[i-1] == 'I'){ wystapienia_i.pb(i); } else{ wystapienia_o.pb(i); } } for(int i=1;i<=n;i++){ sumy_i[i] = -1; sumy_j[i] = -1; } for(int i=0;i<wystapienia_j.size()-k+1;i++){ sumy_j[wystapienia_j[i+k-1]] = wystapienia_j[i+k-1] - wystapienia_j[i]+1 - k; } sumy_j[0] = 1e9; for(int i=1;i<=n;i++){ if(sumy_j[i] == -1){ sumy_j[i] = sumy_j[i-1] + 1; } } for(int i=0;i<wystapienia_i.size()-k+1;i++){ sumy_i[wystapienia_i[i]] = wystapienia_i[i+k-1] - wystapienia_i[i] + 1 - k; } sumy_i[n+1] = 1e9; for(int i=n;i>=1;i--){ if(sumy_i[i] == -1){ sumy_i[i] = sumy_i[i+1] + 1; } } /* for(int i=1;i<=n;i++){ cout<<sumy_i[i]<<" "<<sumy_j[i]<<"\n"; } */ ll wyn = 1e8,akt; for(int i=0;i<wystapienia_o.size()-k+1;i++){ akt = wystapienia_o[i+k-1] - wystapienia_o[i] + 1 - k; akt += sumy_j[wystapienia_o[i]-1]; akt += sumy_i[wystapienia_o[i+k-1]+1]; wyn = min(wyn,akt); } if(wyn == 1e8){ cout<<-1<<"\n"; } else{ cout<<wyn<<"\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...