# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1114698 | tkwiatkowski | JJOOII 2 (JOI20_ho_t2) | C++17 | 1 ms | 336 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define fir first
#define sec second
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int n, k; cin >> n >> k;
string s; cin >> s;
//s = ' ' + s + ' ';
int big = pow(10, 9);
vector<pair<int, int>> prefJ(n+2); // od 1
vector<pair<int, int>> sufI(n+2); // od 1
vector<int> J;
for (int i = 0; i < n; i++){
if(s[i] == 'J'){
J.push_back(i);
}
if(J.size() >= k){
prefJ[i].first = J[J.size() - k];
prefJ[i].second = J[J.size() - 1];
} else{
prefJ[i] = {-1, -1};
}
}
vector<int> I;
for (int i = n-1; i >= 0; i--){
if(s[i] == 'I'){
I.push_back(i);
}
if(I.size() >= k){
sufI[i].first = I[I.size() - k];
sufI[i].second = I[I.size()-1];
} else{
sufI[i] = {-1, -1};
}
}
// Mam najblizszy indeksy k*J i k*I
deque<int> O;
bool dasie = 0;
int res = 0;
for (int i = 0; i < n; i++){
if(prefJ[i].first == -1 || sufI[i].second == -1){
continue;
}
if(s[i] == 'O'){
O.push_back(i);
if(O.size() > k){
O.pop_front();
}
}
if(O.size() >= k){
dasie = 1;
int pozny_i_O = O[O.size()-1];
int wczesny_i_O = O[O.size()-k];
int joty = prefJ[wczesny_i_O].first;
int ioty = sufI[pozny_i_O].first;
// cout << wczesny_i_O << ' ' << pozny_i_O << '\n';
// cout << << '\n';
int h = ioty - joty - 3*k + 1;
res = max(res, h);
}
}
if(dasie){
cout << res << '\n';
} else{
cout << -1 << '\n';
}
// for (int i = 0; i < n; i++){
// cout << "J " << prefJ[i].first << ' ' << prefJ[i].second << '\n';
// }
// for (int i = 0; i < n; i++){
// cout << "I " << sufI[i].first << ' ' << prefJ[i].second << '\n';
// }
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |