Submission

Status:

------------------TT

Subtask/Task Score:

0/100

Score: 0

User: Zailagend1

Problemset: Abacus

Language: cpp

Time: 1.093 second

Submitted On: 2026-10-07 13:47:44

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
    cin.tie(0)->sync_with_stdio(false);
    int a;
    cin >> a;
    vector<vector<char>> graph(9,vector<char>(8,'*'));
    vector<int> num = {1,5,10,50,100,500,1000,5000,10000,50000,100000,500000,1000000,5000000,10000000,50000000};
    priority_queue<int> count;
    while(a > 0){
        for(int i = 0;i<num.size();i++){
            if(num[i] > a){
                a -= num[i-1];
                count.push(num[i-1]);
                break;
            }
        }
    }
    for(int i = 0;i<8;i++){
        graph[3][i] = '-';
    }
    for(int i = 0;i<8;i++){
        graph[2][i] = ' ';
    }
    for(int i = 0;i<8;i++){
        graph[4][i] = ' ';
    }
    unordered_map<int,int> count2;
        for(int j = 0;j<8;j++){
            if(j==0){
            while(count.size()!=0&&(count.top() == 50000000 || count.top() == 10000000)){    
                if(count.top() == 50000000){
                    while(count.size()!=0&&count.top() == 50000000){
                        graph[2-count2[50000000]][j] = '*';
                        graph[count2[50000000]][j] = ' ';
                        count2[50000000]++;
                        count.pop();
                    }
                    
                }else if(count.top() == 10000000){
                   while(count.size()!=0&&count.top() == 10000000){
                    graph[3+count2[10000000]][j] = '*';
                    graph[4+count2[10000000]][j] = ' ';
                    count2[10000000]++;
                    count.pop();
                    }
                }
            }
            }else if(j == 1){
            while(count.size()!=0&&(count.top() == 5000000 || count.top() == 1000000)){    
                if(count.top() == 5000000){
                    while(count.size()!=0&&count.top() == 5000000){
                    graph[2-count2[5000000]][j] = '*';
                    graph[1-count2[5000000]][j] = ' ';
                    count2[5000000]++;
                    count.pop();
                    }
                }else if(count.top() == 1000000){
                    while(count.size()!=0&&count.top() == 1000000){
                    graph[3+count2[1000000]][j] = '*';
                    graph[4+count2[1000000]][j] = ' ';
                    count2[1000000]++;
                    count.pop();
                    }
                }
            }
            }else if(j==2){
                while(count.size()!=0&&(count.top() == 500000 || count.top() == 100000)){    
                if(count.top() == 500000){
                    while(count.size()!=0&&count.top() == 500000){
                    graph[2-count2[500000]][j] = '*';
                    graph[1-count2[500000]][j] = ' ';
                    count2[500000]++;
                    count.pop();
                    }
                }else if(count.top() == 100000){
                    while(count.size()!=0&&count.top() == 100000){
                    graph[3+count2[100000]][j] = '*';
                    graph[4+count2[100000]][j] = ' ';
                    count2[100000]++;
                    count.pop();
                    }
                }
            }
            }else if(j==3){
                while(count.size()!=0&&(count.top() == 50000 || count.top() == 10000)){    
                if(count.top() == 50000){
                    while(count.size()!=0&&count.top() == 50000){
                    graph[2-count2[50000]][j] = '*';
                    graph[1-count2[50000]][j] = ' ';
                    count2[50000]++;
                    count.pop();
                    }
                }else if(count.top() == 10000){
                    while(count.size()!=0&&count.top() == 10000){
                    graph[3+count2[10000]][j] = '*';
                    graph[4+count2[10000]][j] = ' ';
                    count2[10000]++;
                    count.pop();
                    }
                }
            }
            }else if(j==4){
                while(count.size()!=0&&(count.top() == 5000 || count.top() == 1000)){    
                if(count.top() == 5000){
                    while(count.size()!=0&&count.top() == 5000){
                    graph[2-count2[5000]][j] = '*';
                    graph[1-count2[5000]][j] = ' ';
                    count2[5000]++;
                    count.pop();
                    }
                }else if(count.top() == 1000){
                    while(count.size()!=0&&count.top() == 1000){
                    graph[3+count2[1000]][j] = '*';
                    graph[4+count2[1000]][j] = ' ';
                    count2[1000]++;
                    count.pop();
                    }
                }
            }
            }else if(j==5){
                while(count.size()!=0&&(count.top() == 500 || count.top() == 100)){   
                if(count.top() == 500){
                    while(count.size()!=0&&count.top() == 500){
                    graph[2-count2[500]][j] = '*';
                    graph[1-count2[500]][j] = ' ';
                    count2[500]++;
                    count.pop();
                    }
                }else if(count.top() == 100){
                    while(count.size()!=0&&count.top() == 100){
                    graph[3+count2[100]][j] = '*';
                    graph[4+count2[100]][j] = ' ';
                    count2[100]++;
                    count.pop();
                    }
                }
            }
            }else if(j==6){
                while(count.size()!=0&&(count.top() == 50 || count.top() == 10)){   
                if(count.top() == 50){
                    while(count.size()!=0&&count.top() == 50){
                    graph[2-count2[50]][j] = '*';
                    graph[1-count2[50]][j] = ' ';
                    count2[50]++;
                    count.pop();
                    }
                }else if(count.top() == 10){
                    while(count.size()!=0&&count.top() == 10){
                    graph[4+count2[10]][j] = '*';
                    graph[5+count2[10]][j] = ' ';
                    count2[10]++;
                    count.pop();
                    }
                }
            }
            }else if(j==7){
                while(count.size()!=0&&(count.top() == 5 || count.top() == 1)){  
                if(count.top() == 5){
                    while(count.size()!=0&&count.top() == 5){
                    graph[2-count2[5]][j] = '*';
                    graph[1-count2[5]][j] = ' ';
                    count2[5]++;
                    count.pop();
                    }
                }else if(count.top() == 1){
                    while(count.size()!=0&&count.top() == 1){
                    graph[4+count2[1]][j] = '*';
                    graph[5+count2[1]][j] = ' ';
                    count2[1]++;
                    count.pop();
                    }
                }
                }
            }
        
        }
        for(int i = 0;i<9;i++){
            for(int j = 0;j<8;j++){
                cout << graph[i][j];
            }
            cout << '\n';
        }
        cout << count2[1];
}