fork download
  1.  
  2. #include<string>
  3. #include<bits/stdc++.h>
  4.  
  5. using namespace std;
  6. int i;
  7. int sumlvl[10];
  8. string s;
  9. struct Node {
  10. int key;
  11. struct Node *son;
  12. struct Node *brother;
  13. struct Node *parent;
  14. int lvl;
  15. };
  16.  
  17. Node *create_tree(int v) {
  18. Node *Tree;
  19. Tree->key = v;
  20. //обнуляем указатели к братьям и сыновьям, независимая вершина, которая хранит value
  21. Tree->son = NULL;
  22. Tree->brother = NULL;
  23. Tree->parent = NULL;
  24. return Tree;
  25. }
  26.  
  27. Node*create_bro(Node*b, int v){
  28. Node* bro;
  29. bro->parent = b->parent;
  30. b->brother = bro;
  31. bro->brother = NULL;
  32. bro->son = NULL;
  33. bro->key = v;
  34. return bro;
  35. }
  36.  
  37. Node *create_son(Node* p, int v){
  38. Node* son;
  39. son->key = v;
  40. p->son = son;
  41. son->parent = p;
  42. son->brother = NULL;
  43. son->son = NULL;
  44. return son;
  45. }
  46.  
  47. Node*SonAndBros(Node* f, int lvl){
  48. i++;
  49. f->son = create_son(f, int(s[i]));
  50. sumlvl[lvl]=f->son->key;
  51. Node*t = f->son;
  52. i++;
  53. while (1){
  54. if(s[i]=='('){
  55. lvl++;
  56. t= SonAndBros(t, lvl);
  57. i++;
  58. }
  59. if(s[i]==',')
  60. i++;
  61. if(s[i]==')')
  62. break;
  63. if(int(s[i])){
  64. t->brother = create_bro(t, int(s[i]));
  65. t = t->brother;
  66. sumlvl[lvl]+=t->key;
  67. }
  68. }
  69. return t;
  70. }
  71.  
  72. Node* making_tree(Node* Root){
  73. Root = create_tree(int(s[0]));
  74. i++;
  75. int lvl = 0;
  76. //sumlvl[0]=int(s[0]);
  77. while(i<s.size()){
  78. if(s[i]=='('){
  79. lvl++;
  80. SonAndBros(Root, lvl);
  81. }
  82. }
  83.  
  84. return Root;
  85. }
  86.  
  87. int main()
  88. {
  89. Node* Tree = NULL;
  90. cin >> s;
  91.  
  92. making_tree(Tree);
  93. for(int i = 0; i<10; i++){
  94. cout << sumlvl[i];
  95. }
  96. cout << Tree->key << ' ' << Tree->son->key;
  97.  
  98. return 0;
  99. }
  100.  
Runtime error #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Standard output is empty