# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
754041 | vjudge1 | JJOOII 2 (JOI20_ho_t2) | C++17 | 0 ms | 0 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.
int n, k;
cin >> n >> k;
string s;
cin >> s;
vector<int> pj;
vector<int> po;
vector<int> pi;
for( int i = 0; i < n; i++ ) {
if( s[i] == 'J') {
pj.pb(i);
}
}
if( pj.size() >= k ) {
for( int i = 0; i < n; i++ ) {
if( s[i] == 'O') {
po.pb(i);
}
}
if( po.size() >= k ) {
for( int i = 0; i < n; i++ ) {
if( s[i] == 'I') {
pi.pb(i);
}
}
if( pi.size() >= k ) {
ll sum = 0;
for( int i = 1; i < k; i++ ) {
sum += pi[i]-pi[i-1]-1;
}
int j = -1;
for( int i = po.size()-1; i >= 0; i-- ) {
if( po[i] < pi[0] ) {
j = i;
break;
}
}
if( j+1 >= k ) {
sum += pi[0]-po[k-1]-1;
for( int i = max(1,j+2-k); i < max(k,j); i++ ) {
sum += po[i] - po[i-1] - 1;
}
int it = -1;
for( int i = pj.size()-1; i >= 0; i-- ) {
if( pj[i] < po[0] ) {
it = i;
break;
}
}
if( it+1 >= k ) {
sum += po[max(0,j+1-k)]-pj[max(k-1,it)]-1;
for( int i = max(1,it+2-k); i < max(k,it); i++ ) {
sum += pj[i] - pj[i-1] - 1;
}
cout << sum << "\n";
for( int i: pj ) {
cout << i+1 << ' ';
}
cout << "\n";
for( int i: po ) {
cout << i+1 << ' ';
}
cout << "\n";
for( int i: pi ) {
cout << i+1 << ' ';
}
} else {
cout << -1;
}
} else {
cout << -1;
}
} else {
cout << -1;
}
} else {
cout << -1;
}
} else {
cout << -1;
}