Submission #4318244
Source Code Expand
import std.stdio, std.array, std.string, std.conv, std.algorithm;
import std.typecons, std.range, std.random, std.math, std.container;
import std.numeric, std.bigint, core.bitop, core.stdc.string;
int INF = 1 << 29;
void main() {
auto N = readln.chomp.to!int;
auto S = readln.chomp;
int x = N;
int y = N;
alias RBT = RedBlackTree!(Tuple!(int, int));
auto row = new RBT[](2*N+10);
auto col = new RBT[](2*N+10);
foreach (i; 0..2*N+10) row[i] = new RBT(tuple(-INF, -INF), tuple(INF, INF));
foreach (i; 0..2*N+10) col[i] = new RBT(tuple(-INF, -INF), tuple(INF, INF));
row[x].insert(tuple(y, y));
col[y].insert(tuple(x, x));
Tuple!(int, int) xrange = tuple(x, x);
Tuple!(int, int) yrange = tuple(y, y);
void insert(int x, int y) {
auto ncol = tuple(x, x);
auto nrow = tuple(y, y);
auto left = col[y].lowerBound(tuple(x, x)).back;
auto right = col[y].upperBound(tuple(x, x)).front;
auto up = row[x].lowerBound(tuple(y, y)).back;
auto down = row[x].upperBound(tuple(y, y)).front;
if (left[1] + 1 == x) {
col[y].removeKey(left);
ncol[0] = left[0];
}
if (right[0] - 1 == x) {
col[y].removeKey(right);
ncol[1] = right[1];
}
if (up[1] + 1 == y) {
row[x].removeKey(up);
nrow[0] = up[0];
}
if (down[0] - 1 == y) {
row[x].removeKey(down);
nrow[1] = down[1];
}
col[y].insert(ncol);
row[x].insert(nrow);
xrange = ncol;
yrange = nrow;
}
foreach (dir; S) {
int nx = x;
int ny = y;
if (dir == 'R') {
nx = col[y].upperBound(tuple(xrange[0]-1, xrange[0]-1)).front[1] + 1;
} else if (dir == 'L') {
nx = col[y].lowerBound(tuple(xrange[1]+1, xrange[1]+1)).back[0] - 1;
} else if (dir == 'U') {
ny = row[x].upperBound(tuple(yrange[0]-1, yrange[0]-1)).front[1] + 1;
} else {
ny = row[x].lowerBound(tuple(yrange[1]+1, yrange[1]+1)).back[0] - 1;
}
x = nx;
y = ny;
insert(x, y);
}
writeln(x - N, " ", y - N);
}
Submission Info
Submission Time |
|
Task |
C - 幼稚園児高橋君 |
User |
nebukuro09 |
Language |
D (LDC 0.17.0) |
Score |
100 |
Code Size |
2310 Byte |
Status |
AC |
Exec Time |
587 ms |
Memory |
243964 KB |
Judge Result
Set Name |
Sample |
Subtask1 |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
Set Name |
Test Cases |
Sample |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt |
Subtask1 |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_sample_01.txt |
AC |
1 ms |
256 KB |
subtask0_sample_02.txt |
AC |
1 ms |
256 KB |
subtask0_sample_03.txt |
AC |
1 ms |
256 KB |
subtask1_01.txt |
AC |
1 ms |
256 KB |
subtask1_02.txt |
AC |
1 ms |
380 KB |
subtask1_03.txt |
AC |
1 ms |
316 KB |
subtask1_04.txt |
AC |
1 ms |
256 KB |
subtask1_05.txt |
AC |
1 ms |
256 KB |
subtask1_06.txt |
AC |
1 ms |
380 KB |
subtask1_07.txt |
AC |
538 ms |
241916 KB |
subtask1_08.txt |
AC |
539 ms |
241660 KB |
subtask1_09.txt |
AC |
580 ms |
239996 KB |
subtask1_10.txt |
AC |
535 ms |
240892 KB |
subtask1_11.txt |
AC |
538 ms |
242556 KB |
subtask1_12.txt |
AC |
582 ms |
240764 KB |
subtask1_13.txt |
AC |
587 ms |
243452 KB |
subtask1_14.txt |
AC |
492 ms |
239996 KB |
subtask1_15.txt |
AC |
490 ms |
240380 KB |
subtask1_16.txt |
AC |
496 ms |
243964 KB |
subtask1_17.txt |
AC |
496 ms |
242812 KB |
subtask1_18.txt |
AC |
493 ms |
241660 KB |
subtask1_19.txt |
AC |
495 ms |
240508 KB |
subtask1_20.txt |
AC |
497 ms |
240508 KB |
subtask1_21.txt |
AC |
498 ms |
241916 KB |