Submission #1060707

# Submission time Handle Problem Language Result Execution time Memory
1060707 2024-08-15T21:00:45 Z ArthuroWich Mechanical Doll (IOI18_doll) C++17
47 / 100
105 ms 14120 KB
#include "doll.h"
#include<bits/stdc++.h>
using namespace std;
struct node {
    int l = INT_MIN, r = INT_MIN, y = 0, valid = 0, 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 = 1;
        }
        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];
    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++) {
        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:71:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |         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 1 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 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 57 ms 7112 KB Output is correct
3 Partially correct 93 ms 12856 KB Output is partially correct
4 Partially correct 100 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 57 ms 7112 KB Output is correct
3 Partially correct 93 ms 12856 KB Output is partially correct
4 Partially correct 100 ms 13500 KB Output is partially correct
5 Partially correct 102 ms 14088 KB Output is partially correct
6 Partially correct 104 ms 14120 KB Output is partially correct
7 Partially correct 105 ms 13988 KB Output is partially correct
8 Partially correct 105 ms 13936 KB Output is partially correct
9 Partially correct 96 ms 12844 KB Output is partially correct
10 Partially correct 104 ms 13656 KB Output is partially correct
11 Partially correct 98 ms 13544 KB Output is partially correct
12 Partially correct 97 ms 13016 KB Output is partially correct
13 Correct 52 ms 7372 KB Output is correct
14 Partially correct 96 ms 13492 KB Output is partially correct
15 Partially correct 94 ms 13492 KB Output is partially correct
16 Partially correct 2 ms 860 KB Output is partially correct
17 Correct 49 ms 7032 KB Output is correct
18 Correct 49 ms 7112 KB Output is correct
19 Partially correct 96 ms 13148 KB Output is partially correct
20 Partially correct 104 ms 13652 KB Output is partially correct
21 Partially correct 102 ms 13504 KB Output is partially correct
22 Partially correct 99 ms 13544 KB Output is partially correct