Submission

Status:

[PPPPPPPPPPPPPPPPPP]

Subtask/Task Score:

{100/100}

Score: 100

User: hyyh

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

Language: cpp

Time: 0.002 second

Submitted On: 2026-01-24 13:17:37

#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <iomanip>
#include <set>
#include <bitset>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
using piiii = tuple<int,int,int,int>;
#define endl '\n'
#define f first
#define s second

int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n,m;cin >> n >> m;
    vector<pii> sum = {{0,0}};
    vector<string> vc;
    for(int i = 0;i < n;i++){
        string a;cin >> a;
        if(sum.back().f + sum.back().s + a.size() > m){
            sum.emplace_back(a.size(),1);
        }
        else{
            sum.back().f += a.size();
            sum.back().s += 1;
        }
        vc.emplace_back(a);
    }
    int cur = 0;
    int cnt  = 0;
    for(auto k:sum){
        cnt++;
        int left1 = m-k.f;
        int left2 = k.s;
        if(left2 == 1){
            cout << vc[cur];
            for(int j = 0;j < left1;j++){
                cout << " ";
            }
            cur++;
        }
        else if(cnt == sum.size()){
            for(int i = 0;i < k.s;i++){
                cout << vc[cur];
                if(left1){
                    cout << " ";
                    left1--;
                }
                cur++;
            }
            for(int i = 0;i < left1;i++) cout << " ";
        }
        else{
            for(int i = 0;i < k.s;i++){
                cout << vc[cur];
                //cout << " " << left1 << " " << left2 << " ";
                for(int j = 0;j < ceil(((float)left1)/((float)left2-1));j++){
                    cout << " ";
                }
                left1 -= ceil(((float)left1)/((float)left2-1));
                left2--;
                cur++;
            }
        }
        cout << endl;
    }
}