Submission

Status:

[PPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: vachirasawin

Problemset: การจัดแนวข้อความ

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-13 03:00:22

// grader-chan
// c2_st66_justify.cpp | c2_st66_justify

#include <bits/stdc++.h>
using namespace std;

int N, M;
pair<string, int> sentence[200];

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> N >> M;

    vector<string> W(N),w;
    for (int i = 0; i < N; i++) cin >> W[i];

    int cnt = 0;
    for (int i = 0; i < N; i++) {
        if (cnt == 0) {
            cnt += W[i].size();
        } else {
            cnt += W[i].size() + 1;
        }

        if (cnt > M) {
            if (w.size() == 1) {
                cout << w[0];
                cnt = W[i].size();
                w.clear();
                w.push_back(W[i]);
            } else {
                int charcnt = 0;
                for (auto j:w) charcnt += j.size() + 1;
                charcnt--;

                int c = M - charcnt;
                int c_0 = c % (w.size() - 1);
                cnt=0;
                for (auto j:w) {
                    cout << j;
                    if (cnt != w.size() - 1) {
                        for (int p = 0; p < c / (w.size() - 1) + (cnt < c_0) + 1; p++) cout << " ";
                    }

                    cnt++;
                }

                cnt = W[i].size();
                w.clear();
                w.push_back(W[i]);
            }
            cout << '\n';
        } else {
            w.push_back(W[i]);
        }
    }

    if (!w.empty()) {
        for (int i = 0; i < w.size(); i++) {
            cout << w[i];
            if (i != w.size() - 1) cout << " ";
        }
    }

    return 0;
}