Submission

Status:

[PPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: 998244353

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

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-31 21:27:22

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

int32_t main() {
	// input
	int N,M;
	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()==0) {
                cout << W[i];
                cnt=0;
            } else 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-=1;
                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 << " ";
			}
		}
	}
}