Submission #36861631
Source Code Expand
// Not my code! Taken from https://atcoder.jp/contests/abc279/submissions/36844595
// and directly line by line converted to D language. Added "@safe:" directive
// at the top, moved "scanf" into a small @trusted wrapper function and replaced
// "printf" with "writeln". Replaced "scanf" with faster I/O code and removed
// global arrays. Arrays are dynamically allocated.
@safe:
import std.stdio, std.range, std.algorithm;
int main() {
int n = readint;
int q = readint;
auto now = iota(n).array;
auto past = iota(n + q).array;
auto idx = iota(n + q).array;
auto fa = [-1].replicate(n + q);
int find_root(int x) {
if (fa[x] == -1) {
return x;
}
return fa[x] = find_root(fa[x]);
}
void unite(int x, int y) {
if (find_root(x) != find_root(y) && find_root(x) != -1) {
fa[find_root(x)] = find_root(y);
}
}
int cntn = n - 1;
int cnt = n - 1;
while (q--) {
int tp = readint;
if (tp == 1) {
int x = readint;
int y = readint;
x--, y--;
unite(now[y], now[x]);
now[y] = ++cntn;
past[cntn] = y;
} else if (tp == 2) {
int x = readint;
x--;
idx[++cnt] = now[x];
} else {
int x = readint;
x--;
writeln(past[find_root(idx[x])] + 1);
}
}
return 0;
}
int readint() {
return fastio.readnum!int; // we can do it even faster than "scanf"
}
// Fast I/O
import std.stdio, std.array, std.ascii, std.exception;
struct fastio {
shared static byte[64 * 1024] buf;
shared static byte[] avail;
static void fillbuf() @trusted {
if (avail.empty)
avail = cast(shared(byte[]))stdin.rawRead(cast(byte[])buf);
enforce(!avail.empty, "EOF");
}
static bool fillbuf_nothrow() @trusted {
if (avail.empty)
avail = cast(shared(byte[]))stdin.rawRead(cast(byte[])buf);
return !avail.empty;
}
static T readnum(T)() {
bool negative = false;
T ans = 0;
fillbuf();
while (std.ascii.isWhite(avail.front)) {
avail = avail[1 .. $];
fillbuf();
}
if (avail.front == '-') {
negative = true;
avail = avail[1 .. $];
fillbuf();
}
enforce(avail.front >= '0' && avail.front <= '9', "bad format");
while (avail.front >= '0' && avail.front <= '9') {
ans = ans * 10 + (avail.front - '0');
avail = avail[1 .. $];
if (!fillbuf_nothrow())
break;
}
return negative ? -ans : ans;
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - BOX |
| User | ssvb |
| Language | D (GDC 9.2.1) |
| Score | 500 |
| Code Size | 2714 Byte |
| Status | AC |
| Exec Time | 71 ms |
| Memory | 14804 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt |
| All | sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt, test_71.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01.txt | AC | 26 ms | 6788 KiB |
| test_01.txt | AC | 7 ms | 6764 KiB |
| test_02.txt | AC | 44 ms | 9852 KiB |
| test_03.txt | AC | 43 ms | 9896 KiB |
| test_04.txt | AC | 40 ms | 10036 KiB |
| test_05.txt | AC | 42 ms | 10116 KiB |
| test_06.txt | AC | 40 ms | 10000 KiB |
| test_07.txt | AC | 44 ms | 10056 KiB |
| test_08.txt | AC | 43 ms | 10056 KiB |
| test_09.txt | AC | 43 ms | 10048 KiB |
| test_10.txt | AC | 44 ms | 9856 KiB |
| test_11.txt | AC | 44 ms | 10040 KiB |
| test_12.txt | AC | 42 ms | 10048 KiB |
| test_13.txt | AC | 41 ms | 10056 KiB |
| test_14.txt | AC | 41 ms | 10036 KiB |
| test_15.txt | AC | 44 ms | 10056 KiB |
| test_16.txt | AC | 41 ms | 9992 KiB |
| test_17.txt | AC | 41 ms | 10008 KiB |
| test_18.txt | AC | 42 ms | 10120 KiB |
| test_19.txt | AC | 44 ms | 9896 KiB |
| test_20.txt | AC | 41 ms | 9896 KiB |
| test_21.txt | AC | 43 ms | 10040 KiB |
| test_22.txt | AC | 46 ms | 9964 KiB |
| test_23.txt | AC | 45 ms | 9964 KiB |
| test_24.txt | AC | 44 ms | 9876 KiB |
| test_25.txt | AC | 46 ms | 9952 KiB |
| test_26.txt | AC | 44 ms | 10052 KiB |
| test_27.txt | AC | 45 ms | 9960 KiB |
| test_28.txt | AC | 47 ms | 10320 KiB |
| test_29.txt | AC | 46 ms | 9960 KiB |
| test_30.txt | AC | 45 ms | 9876 KiB |
| test_31.txt | AC | 47 ms | 10008 KiB |
| test_32.txt | AC | 52 ms | 10580 KiB |
| test_33.txt | AC | 52 ms | 11368 KiB |
| test_34.txt | AC | 57 ms | 11272 KiB |
| test_35.txt | AC | 50 ms | 11020 KiB |
| test_36.txt | AC | 52 ms | 11308 KiB |
| test_37.txt | AC | 59 ms | 13284 KiB |
| test_38.txt | AC | 71 ms | 14260 KiB |
| test_39.txt | AC | 53 ms | 10788 KiB |
| test_40.txt | AC | 49 ms | 10220 KiB |
| test_41.txt | AC | 57 ms | 12496 KiB |
| test_42.txt | AC | 60 ms | 14608 KiB |
| test_43.txt | AC | 66 ms | 14804 KiB |
| test_44.txt | AC | 60 ms | 14740 KiB |
| test_45.txt | AC | 60 ms | 14748 KiB |
| test_46.txt | AC | 58 ms | 14716 KiB |
| test_47.txt | AC | 36 ms | 14712 KiB |
| test_48.txt | AC | 44 ms | 14648 KiB |
| test_49.txt | AC | 54 ms | 14716 KiB |
| test_50.txt | AC | 49 ms | 14788 KiB |
| test_51.txt | AC | 65 ms | 14652 KiB |
| test_52.txt | AC | 63 ms | 12384 KiB |
| test_53.txt | AC | 65 ms | 12272 KiB |
| test_54.txt | AC | 67 ms | 12428 KiB |
| test_55.txt | AC | 65 ms | 12372 KiB |
| test_56.txt | AC | 65 ms | 12412 KiB |
| test_57.txt | AC | 66 ms | 12248 KiB |
| test_58.txt | AC | 67 ms | 12380 KiB |
| test_59.txt | AC | 67 ms | 12356 KiB |
| test_60.txt | AC | 63 ms | 12428 KiB |
| test_61.txt | AC | 52 ms | 11700 KiB |
| test_62.txt | AC | 54 ms | 11620 KiB |
| test_63.txt | AC | 53 ms | 11576 KiB |
| test_64.txt | AC | 54 ms | 11480 KiB |
| test_65.txt | AC | 52 ms | 11588 KiB |
| test_66.txt | AC | 52 ms | 11704 KiB |
| test_67.txt | AC | 52 ms | 11552 KiB |
| test_68.txt | AC | 52 ms | 11436 KiB |
| test_69.txt | AC | 52 ms | 11568 KiB |
| test_70.txt | AC | 39 ms | 11700 KiB |
| test_71.txt | AC | 39 ms | 11640 KiB |