Submission

Status:

----------

Subtask/Task Score:

0/100

Score: 0

User: theem1502

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

Language: c

Time: 0.002 second

Submitted On: 2025-09-26 14:24:42

#include <stdio.h>
#include <stdlib.h>

int main() {
    char num[101];
    int howlong;
    scanf("%s %d", num, &howlong);
    int length = 0;
    while (num[length] != '\0') {
        length++;
    }

    char **thearray = malloc(howlong * sizeof(char*));
    for (int  i = 0; i < howlong; i++) {
        thearray[i] = malloc(10000 *  sizeof(char));
    }
    for (int i = 0; i < howlong; i++) {
        for (int  j = 0; j < 10000; j++) {
            thearray[i][j] = '_';
        }
    }



    int keeptrack = 0;
    for (int i = 0; i < length; i++) {
        int currentnum = num[i];
        if (currentnum >= 'A' && currentnum <= 'z') {
            int tempnum = currentnum;
            int wtf = 0;
            char binary[8];
            while (tempnum > 0){
                binary[wtf++] = (tempnum&1)  + '0';
                tempnum = tempnum >> 1;
            }                                                   
            int binarylength = 0;
            while (binary[binarylength] != '\0') {
                binarylength++;
            }
            binary[7] = '0';
            binarylength = 8;

   
            
            
            for (int j = 7; j >= 0; j--) {
                int realcurrentnum = binary[j];
           

                if (realcurrentnum == '0') {
                if (i == 0 && j == binarylength-1) {
                    for (int j = 0; j < howlong; j++) {
                        thearray[j][0] = 'X';
                    }
                }
                for (int j = 0; j< howlong; j++) {
                    thearray[howlong - 1][keeptrack++] = 'X';
                }
                if (binary[j-1] == '1') {
                    keeptrack--;
                    for (int j = 0; j < howlong; j++) {
                        thearray[j][keeptrack] = 'X';
                    }
                }

            }
            else if (realcurrentnum == '1') {
                for (int  j = 0; j < howlong; j++) {
                    thearray[0][keeptrack++] = 'X';
                }

                if (binary[j-1] == '0') {
                    keeptrack--;
                    for (int j = 0; j < howlong; j++) {
                        thearray[j][keeptrack] = 'X';
                    }
                }
                
            }
            }
        }

        else{
            if (currentnum == '0') {
                if (i == 0) {
                    for (int j = 0; j < howlong; j++) {
                        thearray[j][0] = 'X';
                    }
                }
                for (int j = 0; j< howlong; j++) {
                    thearray[howlong - 1][keeptrack++] = 'X';
                    
                }
                if (num[i+1] == '1') {
                    keeptrack--;
                    for (int j = 0; j < howlong; j++) {
                        thearray[j][keeptrack] = 'X';
                    }
                }

            }
            else if (currentnum == '1') {
                for (int  j = 0; j < howlong; j++) {
                    thearray[0][keeptrack++] = 'X';
                    
                }

                if (num[i+1] == '0') {
                    keeptrack--;
                    for (int j = 0; j < howlong; j++) {
                        thearray[j][keeptrack] = 'X'; 
                        
                    }
                }
                
            }
        }

    }



    for (int i = 0; i < howlong; i++) {
        for (int j = 0; j < keeptrack; j++) {
            printf("%c", thearray[i][j]);
    }
        printf("\n");
    }
}