#include <fstream> #include <iostream> #include <cstring> #include <algorithm> #define f cin #define g cout using namespace std; //ifstream f("date.in"); //ofstream g("date.out"); int m, n; char nota[4], a[15][10000]; void Scrie() { for (int i=0; i<11; ++i) g<<a[i]<<"\n"; } void spatii() { for (int i=0; i<11; i++) a[i][m]=' '; } void adaugaColoana(int c) { spatii(); for (int i=0; i<10; i+=2) { a[i][m]='-'; a[i][m+1]='\0'; } ++m; } void Inceput() { adaugaColoana(0); adaugaColoana(0); a[6][1]='{'; adaugaColoana(0); a[5][2]='/'; a[7][2]=char(92); adaugaColoana(0); a[4][3]='/'; a[7][3]='_'; spatii(); for (int i=0; i<10; ++i) { a[i][m]='|'; a[i][m+1]='\0'; } ++m; adaugaColoana(0); a[3][5]='/'; a[7][5]='_'; a[8][5]=char(92); a[9][5]='_'; adaugaColoana(0); a[0][6]=char(92); a[2][6]='/'; a[6][6]=char(92); a[7][6]='/'; a[9][6]='}'; adaugaColoana(0); a[1][7]='}'; adaugaColoana(0); adaugaColoana(0); a[3][9]=a[5][9]='4'; adaugaColoana(0); adaugaColoana(0); adaugaColoana(0); } void adaugaDiezO(char* nota) { switch (nota[0]) { case 'C': a[10][m-1]='#'; break; case 'D': a[9][m-1]='#'; break; case 'F': a[7][m-1]='#'; break; case 'G': a[6][m-1]='#'; break; case 'A': a[5][m-1]='#'; break; } } void adaugaNotaO(char* nota) { int lin; adaugaColoana(0); adaugaColoana(0); adaugaColoana(0); switch (nota[0]) { case 'C': a[10][m-3]='(';a[10][m-2]='@';a[10][m-1]=')'; lin=10;break; case 'D': a[9][m-3]='(';a[9][m-2]='@';a[9][m-1]=')'; lin=9;break; case 'F': a[7][m-3]='(';a[7][m-2]='@';a[7][m-1]=')'; lin=7;break; case 'G': a[6][m-3]='(';a[6][m-2]='@';a[6][m-1]=')'; lin=6;break; case 'A': a[5][m-3]='(';a[5][m-2]='@';a[5][m-1]=')'; lin=5;break; } for (int i=lin-1; i>lin-4; --i) a[i][m-1]='|'; } void Orizontala(char* nota) { if (!strchr(nota, '#')) adaugaNotaO(nota); else { adaugaDiezO(nota); //Scrie(); adaugaNotaO(nota); //Scrie(); } } void adaugaDiezV(char* nota) { adaugaColoana(0); a[3][m-1]='#'; } void adaugaNotaV(char* nota) { int lin; adaugaColoana(0); adaugaColoana(0); adaugaColoana(0); switch (nota[0]) { case 'C': a[3][m-3]='(';a[3][m-2]='@';a[3][m-1]=')'; lin=3;break; case 'B': a[4][m-3]='(';a[4][m-2]='@';a[4][m-1]=')'; lin=4;break; } for (int i=lin+1; i<lin+4; ++i) a[i][m-3]='|'; } void Verticala(char* nota) { if (!strchr(nota, '#')) adaugaNotaV(nota); else { adaugaNotaV(nota); //Scrie(); adaugaDiezV(nota); //Scrie(); } } int main() { f>>n; Inceput(); while (n--) { f>>nota; if (nota[1]=='2' || nota[0]=='B') Verticala(nota); else Orizontala(nota); adaugaColoana(0); adaugaColoana(0); adaugaColoana(0); } adaugaColoana(0); a[0][m-1]='+'; a[8][m-1]='+'; for (int i=1; i<8; ++i)a[i][m-1]='|'; Scrie(); return 0; }