Submission

Status:

PPPPP

Subtask/Task Score:

100/100

Score: 100

User: chokun

Problemset: หินงอก

Language: cpp

Time: 0.002 second

Submitted On: 2026-10-06 09:15:46

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

int main() {
    int n;
    cin >> n;

    vector<int> lengths(n);
    int max_len = 0;
    int total_width = 0;
    
    // 1. รับค่าและคำนวณหาความกว้างรวมของหินย้อยทุกก้อนต่อกัน
    for (int i = 0; i < n; i++) {
        cin >> lengths[i];
        max_len = max(max_len, lengths[i]); // หาจำนวนแถวสูงสุด
        total_width += 2 * lengths[i];       // ความกว้างรวมของฐานหินย้อย
    }

    // 2. วนลูปพิมพ์ทีละแถว (r คือแถวปัจจุบัน เริ่มจาก 0)
    for (int r = 0; r < max_len; r++) {
        // สร้าง string ของแถวนี้ โดยเติมช่องว่าง ' ' ให้เต็มความกว้างรวมก่อน
        string row_str(total_width, ' '); 
        
        int current_x = 0; // ตัวจับตำแหน่งเริ่มต้นแกน X ของหินย้อยแต่ละลูก
        
        for (int i = 0; i < n; i++) {
            int L = lengths[i];
            
            // พล็อตอักขระเฉพาะหินย้อยลูกที่ยังไม่หมดความยาวเท่านั้น
            if (r < L) {
                row_str[current_x + r] = '\\';              // ขาซ้าย
                row_str[current_x + 2 * L - 1 - r] = '/';   // ขาขวา
            }
            
            // ขยับตำแหน่ง X ไปยังจุดเริ่มต้นของหินย้อยลูกถัดไป (กว้าง 2 * L เสมอ)
            current_x += 2 * L; 
        }
        
        // 3. ลบช่องว่างส่วนเกินที่อยู่ท้ายบรรทัด (Trailing Spaces) เพื่อให้ Grader ตรวจผ่าน
        while (!row_str.empty() && row_str.back() == ' ') {
            row_str.pop_back();
        }
        
        // พิมพ์ผลลัพธ์ของแถวนี้
        cout << row_str << "\n";
    }
}