#include <bits/stdc++.h>
using namespace std;
class A {
public:
vector<int> white;
int black;
static int K;
int ind;
A(int b) {
black = b + 1;
ind = 0;
white.resize(K + 1);
}
void add(int x) {
white[ind] = x + 1;
ind++;
}
bool isFilled() {
return ind >= K;
}
string toString() {
white[K] = black;
sort(white.begin(), white.end());
stringstream ss;
for (int i = 0; i < K; i++) ss << white[i] << " ";
ss << white[K];
return ss.str();
}
};
int A::K;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N;
cin >> N >> A::K;
string S;
cin >> S;
deque<A> bs, ans;
deque<int> ws;
for (int i = 0; i < N; i++) {
if (S[i] == 'b') {
ws.push_back(i);
while (!bs.empty() && !ws.empty()) {
while (!bs.front().isFilled() && !ws.empty()) {
bs.front().add(ws.back());
ws.pop_back();
}
if (bs.front().isFilled()) {
ans.push_back(bs.front());
bs.pop_front();
}
}
} else {
bs.emplace_back(i);
while (!bs.empty() && !ws.empty()) {
while (!bs.front().isFilled() && !ws.empty()) {
bs.front().add(ws.back());
ws.pop_back();
}
if (bs.front().isFilled()) {
ans.push_back(bs.front());
bs.pop_front();
}
}
}
}
while (!ans.empty()) {
cout << ans.front().toString() << "\n";
ans.pop_front();
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |