Submission
Status:
[PPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: C12
Problemset: การจัดแนวข้อความ
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-09 16:05:27
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9+7;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,k;
cin >> n >> k;
vector<string> s(n+1);
s[0] = "";
for(int i = 1;i <= n;i++) cin >> s[i];
vector<int> len(n+1);
for(int i = 0;i <= n;i++) len[i] = s[i].length();
for(int i = 1;i <= n;i++) len[i] += len[i-1];
// return 0;
int last = 0;
vector<int> out;
while(last < n){
int sum = 0;
int now = last+1;
while(now <= n && (len[now] - len[last]) + (now-last-1) <= k){
now++;
}
out.push_back(now-1);
last = now-1;
}
if(last+1 == n){
cout << '\t' << out.back() << '\n';
out.push_back(n);
}
// return 0;
last = 0;
char pri = ' ';
for(int i = 0;i < out.size()-1;i++){
int mx = out[i];
float st = k - (len[mx] - len[last]);
// cerr << mx << '\n';
for(int j = last+1;j <= mx;j++){
cout << s[j];
if(mx - last == 1){
cout << string(k - (len[mx] - len[last]),pri);
}
else{
if(j < mx){
float point = st / (mx-j);
cout << string(ceil(point),pri);
st -= ceil(point);
}
}
}
cout << '\n';
last = mx;
}
int mx = out.back();
for(int j = last+1;j <= mx;j++){
cout << s[j] << pri;
}
return 0;
}
/*
7 16
This is an example of text justification.
6 16
What must be acknowledgement shall be
*/