Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: loop

Problemset: กราฟสัญญาณดิจิทัล

Language: cpp

Time: 0.002 second

Submitted On: 2026-10-10 18:34:27

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    int size;
    cin >> s >> size;
    string bits = "";
    bool binary = true;
    for (int i = 0; i < (int)s.size(); i++) if (s[i] != '0' && s[i] != '1') binary = false;
    if (binary) bits = s;
    else
        for (int i = 0; i < (int)s.size(); i++)
            for (int b = 7; b >= 0; b--) bits += ((s[i] >> b) & 1) ? '1' : '0';
    int n = bits.size(), step = size - 1, width = n * step + 1;
    string g[20];
    for (int r = 0; r < size; r++) g[r] = string(width, '_');
    char level = '1';                                  // the line starts at +5V
    for (int i = 0; i < n; i++) {
        int x0 = i * step;
        if (bits[i] != level)
            for (int r = 0; r < size; r++) g[r][x0] = 'x';
        level = bits[i];
        int row = level == '1' ? 0 : size - 1;
        for (int x = x0; x <= x0 + step; x++) g[row][x] = 'x';
    }
    for (int r = 0; r < size; r++) cout << g[r] << '\n';
    return 0;
}