Submission
Status:
[PPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: Nagornz
Problemset: การจัดแนวข้อความ
Language: cpp
Time: 0.003 second
Submitted On: 2025-11-04 07:04:12
#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()==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 << " ";
}
}
}
}