Submission #1355077
Source Code Expand
#include <iostream> #include <iomanip> #include <cstdio> #include <string> #include <cstring> #include <deque> #include <list> #include <queue> #include <stack> #include <vector> #include <utility> #include <algorithm> #include <map> #include <set> #include <complex> #include <cmath> #include <limits> #include <cfloat> #include <climits> #include <ctime> #include <cassert> #include <numeric> #include <functional> #include <cctype> using namespace std; #define rep(i,a,n) for(int (i)=(a); (i)<(n); (i)++) #define repq(i,a,n) for(int (i)=(a); (i)<=(n); (i)++) #define repr(i,a,n) for(int (i)=(a); (i)>=(n); (i)--) #define int long long int template<typename T> void chmax(T &a, T b) {a = max(a, b);} template<typename T> void chmin(T &a, T b) {a = min(a, b);} template<typename T> void chadd(T &a, T b) {a = a + b;} typedef pair<int, int> pii; typedef long long ll; int dx[] = {0, 0, 1, -1}; int dy[] = {1, -1, 0, 0}; constexpr ll INF = 1001001001001001LL; constexpr ll MOD = 1000000007LL; struct Node { int Number; Node *left, *right; }; int getNumber(string::iterator &it); Node* getChildren(string::iterator &it); Node* parseNode(string::iterator &it); int getNumber(string::iterator &it) { int ret = 0; while(isdigit(*it)) { ret *= 10; ret += (*it - '0'); it++; } return ret; } Node* getChildren(string::iterator &it) { if(*it == '(' && *(it+1) == ')') { it += 2; return NULL; } it++; Node *ret = parseNode(it); it++; return ret; } Node* parseNode(string::iterator &it) { // cerr << *it << endl; assert(*it == '('); Node *CurrentNode = new Node; CurrentNode->left = getChildren(it); it++; // '[' CurrentNode->Number = getNumber(it); it++; // ']' CurrentNode->right = getChildren(it); return CurrentNode; } void dfs(Node *cur) { if(cur == NULL) return; cout << "("; dfs(cur->left); cout << ")"; cout << "["; cout << cur->Number; cout << "]"; cout << "("; dfs(cur->right); cout << ")"; } Node *CreateTree(Node *ns, Node *nt) { if(ns == NULL || nt == NULL) return NULL; Node *ret = new Node; ret->Number = ns->Number + nt->Number; ret->left = CreateTree(ns->left, nt->left); ret->right = CreateTree(ns->right, nt->right); return ret; } signed main() { string s, t; cin >> s >> t; string::iterator its = s.begin(), itt = t.begin(); Node *ns = parseNode(its), *nt = parseNode(itt); Node *ans = CreateTree(ns, nt); // dfs(ns); cout << endl; // dfs(nt); cout << endl; dfs(ans); cout << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - みさわさんの根付き木 |
User | tsutaj |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 2754 Byte |
Status | AC |
Exec Time | 1 ms |
Memory | 256 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 0_sample_0, 0_sample_1, 0_sample_2, 0_sample_3, 0_sample_4, 10_random_00, 10_random_01, 10_random_02, 10_random_03, 10_random_04, 10_random_05, 10_random_06, 10_random_07, 10_random_08, 10_random_09, 10_random_10, 10_random_11, 10_random_12, 10_random_13, 10_random_14, 10_random_15, 10_random_16, 10_random_17, 10_random_18, 10_random_19, 10_random_20, 10_random_21, 10_random_22, 10_random_23, 10_random_24, 10_random_25, 10_random_26, 10_random_27, 10_random_28, 10_random_29, 10_random_30, 10_random_31, 10_random_32, 10_random_33, 10_random_34, 10_random_35, 10_random_36, 10_random_37, 10_random_38, 10_random_39, 20_unbalanced_0, 20_unbalanced_1, 20_unbalanced_2, 20_unbalanced_3, 21_small_unbalanced_0, 21_small_unbalanced_1, 21_small_unbalanced_2, 21_small_unbalanced_3 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_sample_0 | AC | 1 ms | 256 KB |
0_sample_1 | AC | 1 ms | 256 KB |
0_sample_2 | AC | 1 ms | 256 KB |
0_sample_3 | AC | 1 ms | 256 KB |
0_sample_4 | AC | 1 ms | 256 KB |
10_random_00 | AC | 1 ms | 256 KB |
10_random_01 | AC | 1 ms | 256 KB |
10_random_02 | AC | 1 ms | 256 KB |
10_random_03 | AC | 1 ms | 256 KB |
10_random_04 | AC | 1 ms | 256 KB |
10_random_05 | AC | 1 ms | 256 KB |
10_random_06 | AC | 1 ms | 256 KB |
10_random_07 | AC | 1 ms | 256 KB |
10_random_08 | AC | 1 ms | 256 KB |
10_random_09 | AC | 1 ms | 256 KB |
10_random_10 | AC | 1 ms | 256 KB |
10_random_11 | AC | 1 ms | 256 KB |
10_random_12 | AC | 1 ms | 256 KB |
10_random_13 | AC | 1 ms | 256 KB |
10_random_14 | AC | 1 ms | 256 KB |
10_random_15 | AC | 1 ms | 256 KB |
10_random_16 | AC | 1 ms | 256 KB |
10_random_17 | AC | 1 ms | 256 KB |
10_random_18 | AC | 1 ms | 256 KB |
10_random_19 | AC | 1 ms | 256 KB |
10_random_20 | AC | 1 ms | 256 KB |
10_random_21 | AC | 1 ms | 256 KB |
10_random_22 | AC | 1 ms | 256 KB |
10_random_23 | AC | 1 ms | 256 KB |
10_random_24 | AC | 1 ms | 256 KB |
10_random_25 | AC | 1 ms | 256 KB |
10_random_26 | AC | 1 ms | 256 KB |
10_random_27 | AC | 1 ms | 256 KB |
10_random_28 | AC | 1 ms | 256 KB |
10_random_29 | AC | 1 ms | 256 KB |
10_random_30 | AC | 1 ms | 256 KB |
10_random_31 | AC | 1 ms | 256 KB |
10_random_32 | AC | 1 ms | 256 KB |
10_random_33 | AC | 1 ms | 256 KB |
10_random_34 | AC | 1 ms | 256 KB |
10_random_35 | AC | 1 ms | 256 KB |
10_random_36 | AC | 1 ms | 256 KB |
10_random_37 | AC | 1 ms | 256 KB |
10_random_38 | AC | 1 ms | 256 KB |
10_random_39 | AC | 1 ms | 256 KB |
20_unbalanced_0 | AC | 1 ms | 256 KB |
20_unbalanced_1 | AC | 1 ms | 256 KB |
20_unbalanced_2 | AC | 1 ms | 256 KB |
20_unbalanced_3 | AC | 1 ms | 256 KB |
21_small_unbalanced_0 | AC | 1 ms | 256 KB |
21_small_unbalanced_1 | AC | 1 ms | 256 KB |
21_small_unbalanced_2 | AC | 1 ms | 256 KB |
21_small_unbalanced_3 | AC | 1 ms | 256 KB |