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";
}
}