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
AC × 53
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