Submission #1060812

# Submission time Handle Problem Language Result Execution time Memory
1060812 2024-08-15T23:21:19 Z ArthuroWich Mechanical Doll (IOI18_doll) C++17
47 / 100
108 ms 15192 KB
#include "doll.h"
#include<bits/stdc++.h>
using namespace std;
struct node {
    int l = INT_MIN, r = INT_MIN, y = 0, valid = 1, d = 0;
};
int timer = 2, dep;
vector<int> x, y;
node tree[500005];
void build(int n, int d) {
    tree[n].d = d;
    if (dep-1 == d) {
        return;
    }
    tree[n].l = -timer;
    timer++;
    tree[n].r = -timer;
    timer++;
    build(-tree[n].l, d+1);
    build(-tree[n].r, d+1);
}
void create(int n, int d, int v) {
    if (dep-1 == d) {
        if (tree[n].y == 0) {
            tree[n].l = v;
        } else {
            tree[n].r = v;
        }
    } else {
        if (tree[n].y == 0) {
            create(-tree[n].l, d+1, v);
        } else {
            create(-tree[n].r, d+1, v);
        }
    }
    tree[n].y ^= 1;
}
void clean(int n, int d) {
    if (dep-1 == d) {
        if (tree[n].l == INT_MIN && tree[n].r == INT_MIN) {
            tree[n].valid = 0;
        }
        if (tree[n].l == INT_MIN) {
            tree[n].l = -1;
        } 
        if (tree[n].r == INT_MIN) {
            tree[n].r = -1;
        }
    } else {
        clean(-tree[n].l, d+1);
        clean(-tree[n].r, d+1);
        tree[n].valid |= tree[-tree[n].l].valid;
        tree[n].valid |= tree[-tree[n].r].valid;
        if (tree[-tree[n].l].valid == 0) {
            tree[n].l = -1;
        }
        if (tree[-tree[n].r].valid == 0) {
            tree[n].r = -1;
        } 
    }
}
void create_circuit(int m, vector<int> a) {
    vector<int> d(m+1, 0);
    d[0] = a[0];
    if (a.size() == 1) {
        answer(d, x, y);
        return;
    }
    d[a[0]] = -1;
    int n = a.size(), s;
    dep = ceil(log2(n));
    s = 1 << dep;
    build(1, 0);
    for (int i = 1; i < s; i++) {
        if (i < a.size()) {
            create(1, 0, a[i]);
            d[a[i]] = -1;
        } else {
            create(1, 0, INT_MIN);
        }
    }
    create(1, 0, 0);
    clean(1, 0);
    //for (int i = 1; i < s; i++) {
    //    cout << tree[i].l << " " << tree[i].r << endl;
    //}
    //cout << endl;
    for (int i = 1; i < s; i++) {
        if (tree[i].valid == 0) {
            continue;
        }
        x.push_back(tree[i].l);
        y.push_back(tree[i].r);
    }
    answer(d, x, y);
}

Compilation message

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:75:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |         if (i < a.size()) {
      |             ~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 0 ms 348 KB Output is partially correct
2 Correct 50 ms 7112 KB Output is correct
3 Partially correct 100 ms 12992 KB Output is partially correct
4 Partially correct 103 ms 13500 KB Output is partially correct
# Verdict Execution time Memory Grader output
1 Partially correct 0 ms 348 KB Output is partially correct
2 Correct 50 ms 7112 KB Output is correct
3 Partially correct 100 ms 12992 KB Output is partially correct
4 Partially correct 103 ms 13500 KB Output is partially correct
5 Partially correct 105 ms 14144 KB Output is partially correct
6 Partially correct 107 ms 13988 KB Output is partially correct
7 Partially correct 103 ms 13984 KB Output is partially correct
8 Partially correct 108 ms 13732 KB Output is partially correct
9 Partially correct 95 ms 12852 KB Output is partially correct
10 Partially correct 103 ms 13652 KB Output is partially correct
11 Partially correct 104 ms 14936 KB Output is partially correct
12 Partially correct 97 ms 13924 KB Output is partially correct
13 Correct 52 ms 8384 KB Output is correct
14 Partially correct 97 ms 14516 KB Output is partially correct
15 Partially correct 96 ms 14640 KB Output is partially correct
16 Partially correct 3 ms 860 KB Output is partially correct
17 Correct 49 ms 8028 KB Output is correct
18 Correct 54 ms 8136 KB Output is correct
19 Partially correct 98 ms 13952 KB Output is partially correct
20 Partially correct 101 ms 15192 KB Output is partially correct
21 Partially correct 100 ms 15012 KB Output is partially correct
22 Partially correct 101 ms 14996 KB Output is partially correct