/
dwite201201p5.java
64 lines (55 loc) · 1.61 KB
/
dwite201201p5.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* DWITE programming contest solutions
* January 2012 - Problem 5: "Comet Vomit"
* Copyright (c) Project Nayuki. All rights reserved.
*
* https://www.nayuki.io/page/dwite-programming-contest-solutions
* https://github.com/nayuki/DWITE-programming-contest-solutions
*/
public final class dwite201201p5 extends DwiteSolution {
public static void main(String[] args) {
new dwite201201p5().run("DATA5.txt", "OUT5.txt");
}
protected void runOnce() {
int[][] dust = new int[100000][3];
int dustCount = 0;
int n = io.readIntLine();
for (int j = 0; j < n; j++) {
io.tokenizeLine();
int a = io.readIntToken();
int b = io.readIntToken();
int c = io.readIntToken();
int d = io.readIntToken();
int e = io.readIntToken();
int f = io.readIntToken();
int g = io.readIntToken();
int h = io.readIntToken();
int i = io.readIntToken();
int u = io.readIntToken();
int v = io.readIntToken();
for (int t = u; t <= v; t++, dustCount++) {
dust[dustCount] = new int[] {
a*t*t + b*t + c,
d*t*t + e*t + f,
g*t*t + h*t + i
};
}
}
int globalMax = 0;
for (int xSign = -1; xSign <= 1; xSign += 2) {
for (int ySign = -1; ySign <= 1; ySign += 2) {
for (int zSign = -1; zSign <= 1; zSign += 2) {
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int i = 0; i < dustCount; i++) {
int position = xSign * dust[i][0] + ySign * dust[i][1] + zSign * dust[i][2];
min = Math.min(position, min);
max = Math.max(position, max);
}
globalMax = Math.max(max - min, globalMax);
}
}
}
io.println(globalMax);
}
}