제출 #604866

#제출 시각아이디문제언어결과실행 시간메모리
604866piOOE자동 인형 (IOI18_doll)C++17
47 / 100
133 ms14440 KiB
#include <bits/stdc++.h>
#include "doll.h"

using namespace std;

void create_circuit(int m, vector<int> a) {
    int n = (int) a.size();
    vector<int> c(m + 1, 0), x, y;
    c[0] = a[0];
    a.push_back(0);
    vector<vector<int>> g(m + 1);
    for (int i = 0; i < n; ++i) {
        g[a[i]].push_back(a[i + 1]);
    }
    function<int(vector<int>)> solve = [&](vector<int> z) -> int {
        if (z.size() == 1) {
            return z[0];
        }
        int last = -((int) x.size() + 1);
        x.push_back(0), y.push_back(0);
        vector<int> L, R;
        for (int i = 0; i < (int) z.size(); ++i) {
            if (i & 1 ^ 1) {
                L.push_back(z[i]);
            } else {
                R.push_back(z[i]);
            }
        }
        if (L.size() > R.size()) {
            R.push_back(L.back());
            L.back() = last;
        }
        int ll = solve(L), rr = solve(R);
        x[-last - 1] = ll, y[-last - 1] = rr;
        return last;
    };
    a.erase(a.begin());
    int last = solve(a);
    for (int i = 1; i <= m; ++i) {
        c[i] = last;
    }
    answer(c, x, y);
}

컴파일 시 표준 에러 (stderr) 메시지

doll.cpp: In lambda function:
doll.cpp:23:19: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
   23 |             if (i & 1 ^ 1) {
      |                 ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...