Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: nate213121

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

Language: cpp

Time: 0.005 second

Submitted On: 2026-09-04 20:11:54

#include <bits/stdc++.h>

using namespace std;

int main()
{
    string binary;
    int s;
    cin >> binary >> s;

    string binaryStr = "";

    if(binary[0] != '0' && binary[0] != '1')
    {
        for(auto& c:binary)
        {
            binaryStr += bitset<8>(c).to_string();
        }
        binary = binaryStr;
    }

    vector<vector<char>> grid;

    for(int i = 0; i < s; i++)
    {
        vector<char> line;
        for(int j = 0; j < binary.size() * s; j++)
        {
            line.push_back('_');
        }
        grid.push_back(line);
    }

    int currColumn = 0;

    for(int i = 0; i < binary.size(); i++)
    {
        int row;
        if(binary[i] == '0')
        {
            row = s - 1;
        }
        else
        {
            row = 0;
        }

        for(int j = 0; j < s; j++)
        {
            grid[row][currColumn] = 'x';
            currColumn++;
        }
        currColumn--;
    }

    int verticalCount = 0;

    for(int col = 0; col < grid[0].size(); col++)
    {
        if(grid[0][col] == 'x' && grid[s - 1][col] == 'x')
        {
            for(int row = 1; row <= s - 2; row++)
            {
                grid[row][col] = 'x';
            }
            verticalCount++;
        }
    }

    if(binary[0] == '0')
    {
        for(int row = 0; row < s; row++)
        {
            grid[row][0] = 'x';
        }
    }

    for(int i = 0; i < grid.size(); i++)
    {
        for(int j = 0; j < binary.size() * (s - 1) + 1; j++)
        {
            cout << grid[i][j];
        }
        if(i != grid.size() - 1)
        {
            cout << endl;
        }
    }
    return 0;
}