Submission

Status:

PPPPP

Subtask/Task Score:

100/100

Score: 100

User: Kei

Problemset: ชั้นหนังสือ

Language: cpp

Time: 0.027 second

Submitted On: 2026-10-06 18:20:07

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

void solve(){
    int h,n,copies;
    string thebook;
    cin >> h >> n;
    vector<string> books;
    for(int i=0;i<n;i++){
        cin >> copies >> thebook;
        
        for(int j=copies;j--;) books.push_back(thebook);
    }
    sort(books.begin(), books.end());
    for(int i=0;i<(int)books.size();i++){
        string dots(h - books[i].size(), '.');      // one '.' per empty cell
        if(i%2==0) books[i] = books[i] + dots;      // upright: empty cells below
        else {
            reverse(books[i].begin(), books[i].end());
            books[i] = dots + books[i];             // upside down: empty cells on top
        }
    }
    for(int i=books.size();i--;)cout<<"+-";
    cout << "+\n";
    for(int i=0;i<h;i++){
        for(int j=0;j<(int)books.size();j++){
            cout << "|";
            cout << books[j][i];
        }
        cout << "|";
        cout<<'\n';
    }
    for(int i=books.size();i--;)cout<<"+-";
    cout<<'+';
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}