Submission

Status:

[PPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: Gump2011

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

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-08 18:20:53

#include <bits/stdc++.h>
using namespace std;
int main() {
    ios::sync_with_stdio(0), cin.tie(0);
    int n, m;
    cin >> n >> m;
    vector<string> s(n);
    for(int i=0;i<n;i++){
        cin >> s[i];
    }

    int i = 0;
    while(i < n){
        int len = s[i].size();
        int j = i + 1;
        while(j < n && len + 1 + s[j].size() <= m){
            len += 1 + s[j].size();
            j++;
        }

        int num_s = j - i;
        int tt = 0;
        for(int k = i; k < j; k++){
            tt += s[k].size();
        }

        string ans;
        if(j == n || num_s == 1){
            ans += s[i];
            for(int k=i+1;k<j;k++){
                ans += " " + s[k];
            }
            ans += string(m - ans.size(), ' ');
        }else{
            int need = m - tt;
            int bwn = need / (num_s - 1);
            int ex = need % (num_s - 1);
            for(int k=i;k<j;k++){
                ans += s[k];
                if(k < j - 1){
                    int sp = bwn + (ex-- > 0 ? 1 : 0);
                    ans += string(sp, ' ');
                }
            }
        }

        cout << ans << '\n';
        i = j;
    }

    return 0;
}