summaryrefslogtreecommitdiffstats
path: root/šola/p1/dn/DN05_63230317.java
blob: b46b5d1c532c15e281bcc6793b7f4a886aad2fc0 (plain) (blame)
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
import java.util.*;
public class DN05_63230317 {
	public static void main (String[] args) {
		Scanner sc = new Scanner(System.in);
		int[/* tetromino */][/* zgoraj=0 spodaj=1 */][/* stolpec */] tetro = {
			{{0, 0, 0, 0}, {1, 1, 1, 1}}	// 0
			,{{0}, {4}}			// 1
			,{{0, 0}, {2, 2}}		// 2
			,{{1, 0, 1}, {2, 2, 2}}		// 3
			,{{1, 0}, {2, 3}}		// 4
			,{{0, 0, 0}, {1, 2, 1}}		// 5
			,{{0, 1}, {3, 2}}		// 6
			,{{0, 2}, {3, 3}}		// 7
			,{{1, 1, 0}, {2, 2, 2}}		// 8
			,{{0, 0}, {1, 3}}		// 9
			,{{0, 0, 0}, {2, 1, 1}}		// 10
			,{{2, 0}, {3, 3}}		// 11
			,{{0, 0, 0}, {1, 1, 2}}		// 12
			,{{0, 0}, {3, 1}}		// 13
			,{{0, 1, 1}, {2, 2, 2}}		// 14
			,{{0, 0, 1}, {1, 2, 2}}		// 15
			,{{1, 0}, {3, 2}}		// 16
			,{{1, 0, 0}, {2, 2, 1}}		// 17
			,{{0, 1}, {2, 3}}		// 18
		};
		int višine[] = new int[2005];
		int n = sc.nextInt();
		for (int unused = 0; unused < n; unused++) {
			int l = sc.nextInt();
			int x = sc.nextInt()+1000;
			int najbližji = 69;
			for (int i = 0; i < tetro[l][0].length; i++) {
				if (najbližji == 69 || višine[x+i]+tetro[l][1][i] > višine[x+najbližji]+tetro[l][1][najbližji])
					najbližji = i;
			}
			if (System.getenv("DN05_DEBUG") != null) {
				System.err.println("pade tetromino broj " + l + " na " + (x-1000) + " in stanje je");
				System.err.println("najbližji je " + najbližji);
			}
			višine[x+najbližji] += tetro[l][1][najbližji] - tetro[l][0][najbližji];
			for (int i = 0; i < tetro[l][0].length; i++) {
				if (i == najbližji)
					continue;
				višine[x+i] = višine[x+najbližji]+tetro[l][0][najbližji]-tetro[l][0][i];
			}
			if (System.getenv("DN05_DEBUG") != null) {
				for (int i = 0; i < višine.length; i++) {
					if (višine[i] == 0)
						continue;
					System.err.println((i-1000) + ": " + višine[i]);
				}
			}
		}
		for (int i = 0; i < višine.length; i++) {
			if (višine[i] == 0)
				continue;
			System.out.println((i-1000) + ": " + višine[i]);
		}
	}
}