Submission #1155665

#TimeUsernameProblemLanguageResultExecution timeMemory
1155665secretwood01Take-out (POI13_usu)C++17
0 / 100
215 ms40320 KiB
#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; // Define static variable

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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...