05: C: Slightly faster
This commit is contained in:
parent
af88bca186
commit
63c5701254
|
@ -29,7 +29,25 @@ int main(void) {
|
|||
int i, n, N = 0, A, f, t;
|
||||
|
||||
while (fgets(l, BUFSIZ, stdin)) {
|
||||
if ((e = strrchr(l, ']'))) {
|
||||
if (l[0] == 'm') {
|
||||
n = strtol(l + 5, &e, 10);
|
||||
f = strtol(e + 6, &e, 10) - 1;
|
||||
t = atoi(e + 4) - 1;
|
||||
|
||||
alloc_crates(stacksA[t], n)
|
||||
tf = crate_pos(stacksA[f], -1);
|
||||
tc = crate_pos(stacksA[t], -n);
|
||||
for (i = 0; i < n; i++)
|
||||
tc[i] = tf[-i];
|
||||
stacksA[f].len -= n;
|
||||
|
||||
alloc_crates(stacksB[t], n)
|
||||
tf = crate_pos(stacksB[f], -n);
|
||||
tc = crate_pos(stacksB[t], -n);
|
||||
for (i = 0; i < n; i++)
|
||||
tc[i] = tf[i];
|
||||
stacksB[f].len -= n;
|
||||
} else if ((e = strrchr(l, ']'))) {
|
||||
if (e > m) {
|
||||
m = e;
|
||||
A = (m - l) / 4 + 1;
|
||||
|
@ -49,26 +67,6 @@ int main(void) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (l[0] == 'm') {
|
||||
n = strtol(l + 5, &e, 10);
|
||||
f = strtol(e + 6, &e, 10) - 1;
|
||||
t = atoi(e + 4) - 1;
|
||||
|
||||
alloc_crates(stacksA[t], n)
|
||||
tf = crate_pos(stacksA[f], -1);
|
||||
tc = crate_pos(stacksA[t], -n);
|
||||
for (i = 0; i < n; i++)
|
||||
tc[i] = tf[-i];
|
||||
stacksA[f].len -= n;
|
||||
|
||||
alloc_crates(stacksB[t], n)
|
||||
tf = crate_pos(stacksB[f], -n);
|
||||
tc = crate_pos(stacksB[t], -n);
|
||||
for (i = 0; i < n; i++)
|
||||
tc[i] = tf[i];
|
||||
stacksB[f].len -= n;
|
||||
}
|
||||
}
|
||||
|
||||
printf("Silver: ");
|
||||
|
|
Loading…
Reference in New Issue